2016-12-05 179 views
-1

我有這個MySQL查詢,效果很好。它所做的是在數據庫中顯示所有文件名(filename),以及該文件名的海報,然後顯示標有文件名(cp.user_id)的任何用戶。後來在劇本我爆tagGroup.在MySQL查詢中添加WHERE子句

在叫tbl_collab表我有一個創建了一個新的領域「批准」,這可以是'yes''no',我想知道如何將一個WHERE子句添加到我的查詢,以便只顯示tbl_collab中批准=「是」的用戶。我怎樣才能做到這一點?非常感謝。

"SELECT up.id, up.file, up.title, p.user_name, p.user_id, GROUP_CONCAT(CONCAT(cp.user_id, '~', cp.user_name) SEPARATOR '|') AS tagGroup 
FROM tbl_uploads up 
LEFT JOIN tbl_users p ON up.user_id = p.user_id 
LEFT JOIN tbl_collab c ON up.file = c.file 
LEFT JOIN tbl_users cp ON cp.user_id = c.collab_userid 
GROUP BY up.file ORDER BY up.id DESC LIMIT ? , ?" 

這就是我如何爆炸tagGroup

$tag_array = explode('|' , $tagGroup); 

foreach($tag_array as $tag) { 

list($uid,$uname) = explode('~',$tag,2); 
+3

在最後的'LE'下面添加'WHERE c.approved ='yes'' FT JOIN',但在您的「GROUP BY」條款之前。 –

+0

完美工作。謝謝。 – JulianJ

回答

1

您可以添加在這種情況下WHERE子句像

"SELECT up.id, up.file, up.title, p.user_name, p.user_id, GROUP_CONCAT(CONCAT(cp.user_id, '~', cp.user_name) SEPARATOR '|') AS tagGroup 
FROM tbl_uploads up 
LEFT JOIN tbl_users p ON up.user_id = p.user_id 
LEFT JOIN tbl_collab c ON up.file = c.file 
LEFT JOIN tbl_users cp ON cp.user_id = c.collab_userid 
WHERE c.approved = 'yes' 
GROUP BY up.file ORDER BY up.id DESC LIMIT ? , ?" 

或者你可以像

"SELECT up.id, up.file, up.title, p.user_name, p.user_id, GROUP_CONCAT(CONCAT(cp.user_id, '~', cp.user_name) SEPARATOR '|') AS tagGroup 
FROM tbl_uploads up 
LEFT JOIN tbl_users p ON up.user_id = p.user_id 
LEFT JOIN tbl_collab c ON up.file = c.file AND c.approved = 'yes' 
LEFT JOIN tbl_users cp ON cp.user_id = c.collab_userid 
GROUP BY up.file ORDER BY up.id DESC LIMIT ? , ?" 
+0

我最終選擇了第二個條件,因爲它能夠滿足我的需求。謝謝。 – JulianJ

0

加盟條件添加WHERE c.approved = 'yes'到您的SQL查詢添加此條件)或變化加入條件爲LEFT JOIN tbl_collab c ON (up.file = c.file AND c.approved = 'yes')