2013-03-21 63 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') 

這就是你需要做的要點;只需添加其他連接和條件。

相關問題