2013-03-21 31 views
0
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"); 

这不起作用的部分是将城市和州纳入结果中。当前查询将该城市列入城市和州列。 Obv,最后一次加入是问题所在。每个表格有2个值的连接AS别名值

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

我probly需要得到更多的价值出来的wp_usermeta表,但我敢肯定,如果有人soves这个问题对我来说我自己看着办吧。

啊..根据Juris Malinens和Explosion Pills的建议,我得到了这个查询的工作,我想。

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"); 
+0

怎么样:LEFT JOIN'wp_usermeta' usermeta1 ON('wp_users'.'ID' ='wp_usermeta'.'user_id'和'wp_usermeta'.'meta_key' = 'location_city')LEFT JOIN'ON wp_usermeta' usermeta2 ('wp_users'.'ID' ='wp_usermeta'.'user_id' AND'wp_usermeta'.'meta_key' ='location_state')? – 2013-03-21 14:53:45

回答

2

查询有没有办法知道你想加入对特定行,而实际上它在当前的查询是不可能的(即它只能在一个连接在一个时间)的元值。你需要加入对wp_usermeta两次:

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') 

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

相关问题