Mysql 每个表以2个值作为别名值进行联接

Mysql 每个表以2个值作为别名值进行联接,mysql,join,Mysql,Join,这其中不起作用的部分是将城市和州纳入结果。当前查询将城市同时放入“城市”和“州”列。Obv,最后一个连接是问题所在 SELECT `wp_posts`.`post_title` , `wp_posts`.`post_content` , `wp_posts`.`post_type` , `wp_posts`.`ID` , `wp_posts`.`post_date` , `wp_usermeta`.`user_id` AS `userID` , `wp_usermeta`.`meta_value

这其中不起作用的部分是将城市和州纳入结果。当前查询将城市同时放入“城市”和“州”列。Obv,最后一个连接是问题所在

SELECT
`wp_posts`.`post_title`
, `wp_posts`.`post_content`
, `wp_posts`.`post_type`
, `wp_posts`.`ID`
, `wp_posts`.`post_date`
, `wp_usermeta`.`user_id` AS `userID`
, `wp_usermeta`.`meta_value` AS `city`
, `wp_usermeta`.`meta_value` AS `state`
, `wp_users`.`fbconnect_userid` AS `fbuid`
FROM    `wp_posts`    
INNER JOIN `wp_emu_shop_reviews`         
    ON (`wp_posts`.`ID` = `wp_emu_shop_reviews`.`postID`)
LEFT JOIN `wp_users`                
    ON (`wp_emu_shop_reviews`.`wpUserID` = `wp_users`.`ID`)
LEFT JOIN `wp_usermeta`              
    ON (`wp_users`.`ID` = `wp_usermeta`.`user_id` AND `wp_usermeta`.`meta_key` ='location_city')
        OR(`wp_users`.`ID` = `wp_usermeta`.`user_id` AND `wp_usermeta`.`meta_key` ='location_state')
WHERE (`wp_posts`.`post_type` = "review"
AND `wp_posts`.`post_status` = "publish");
我可能需要从wp_usermeta表中获取更多的值,但我确信,若有人能为我解决这个问题,我一定能找到答案

啊。。根据Juris Malinens和爆炸药片的建议,我想我的这个查询是可行的

"This is the title" "blahblahblah"  "review"    "2074"  "2012-05-03 00:03:10"   "15"    "Redmond"   "Redmond"   "xxxxxxxx"

查询无法知道要为特定行连接哪些元数据,事实上,在当前查询中这是不可能的(即,一次只能连接一个)。您需要在
wp\u usermeta上加入两次:

SELECT
`wp_posts`.`post_title`
/* , `wp_posts`.`post_content` */
, `wp_posts`.`post_type`
, `wp_posts`.`ID`
, `wp_posts`.`post_date`
/* , `wp_usermeta`.`user_id` AS `userID` */
, um1.user_id AS `userID` 
, um1.meta_value AS `city`
, um2.meta_value AS `state`
, `wp_users`.`fbconnect_userid` AS `fbuid`
FROM    `wp_posts`    
INNER JOIN `wp_emu_shop_reviews`         
ON (`wp_posts`.`ID` = `wp_emu_shop_reviews`.`postID`)
LEFT JOIN `wp_users`                
ON (`wp_emu_shop_reviews`.`wpUserID` = `wp_users`.`ID`)
/*  LEFT JOIN `wp_usermeta`              
ON (`wp_users`.`ID` = `wp_usermeta`.`user_id` AND `wp_usermeta`.`meta_key` ='location_city') */
LEFT JOIN wp_usermeta um1 ON (`wp_users`.`ID` = `um1`.`user_id` AND um1.meta_key ='location_city') 
LEFT JOIN wp_usermeta um2 ON(`wp_users`.`ID` = `um2`.`user_id` AND um2.meta_key ='location_state')

WHERE (`wp_posts`.`post_type` = "review"
AND `wp_posts`.`post_status` = "publish");

这就是你需要做的要点;只需添加其他连接和条件。

关于:左连接
wp\u usermeta
usermeta1打开(
wp\u users
ID
=
wp\u usermeta
用户ID
wp\u usermeta
元键='location\u city')左连接
wp\u usermeta(
wp\u用户
ID
=
wp\u用户元
user\u ID
wp\u用户元
元键
='location\u state')?
SELECT
    state.user_id AS userID
    state.meta_value AS state,
    city.meta_value AS city,
FROM
    wp_users
    JOIN wp_usermeta state ON (wp_users.ID = state.user_id
       AND state.meta_key = 'location_state')
    JOIN wp_usermeta city ON (wp_users.ID = city.user_id
       AND state.meta_key = 'location_city')