如何简单地将左联接的列值作为查询中的单独键返回?
SELECT meta.*
, post.* as venue
, venue_meta.* as venue_meta
FROM $wpdb->postmeta as meta
LEFT
JOIN $wpdb->posts as post
ON meta.meta_key = '_EventVenueID'
AND meta.meta_value = post.id
LEFT
JOIN $wpdb->postmeta as venue_meta
ON venue_meta.post_id = venue.id
WHERE meta.post_id = %d
GROUP
BY meta.meta_id
所以我期望post表中的所有列都以$ response ['venue']的形式返回,但是第一行出现语法错误。
答案 0 :(得分:0)
基本上,像post.* as venue
这样的构造无效,并且会产生语法错误。
您可以为一个列名使用一个别名,例如post.id as id
但是您永远不会获得联接的嵌套结果。选择将检索行,该行由具有其值的列向量组成。
查询的缩写形式应该是
SELECT *
FROM $wpdb->postmeta as meta
LEFT
JOIN $wpdb->posts as post
ON meta.meta_key = '_EventVenueID'
AND meta.meta_value = post.id
LEFT
JOIN $wpdb->postmeta as venue_meta
ON venue_meta.post_id = venue.id
WHERE meta.post_id = %d
这将为您提供一行中所有表的所有列(或PHP中的数组)。 为了将其拆分为子数组,结果集让您遍历结果集属性,例如列名和表名。这可能有助于以编程方式构建子阵列。