2012-05-14 36 views
0

我正在使用下面的查詢從「place」表中返回所有「活動」條目。每個作者也可以被包含在一個類別(cat_id)中,我也想爲排序目的返回這個類別。 $ user_id表示登錄用戶的ID,並且只有在userid = $ user_id的地方纔返回cat_id。我嘗試了一些東西,但似乎無法得到它的工作。下面的查詢正在工作,但是如果用戶處於多個類別中,它將返回兩次。從mysql表中返回類別ID

$active = 1; 
$query_str = "SELECT a.*,b.user_id,c.username,c.fbook, d.cat_id FROM place a 
LEFT OUTER JOIN wait b ON a.id=b.post_id AND b.user_id='$user_id' 
JOIN users c ON a.userid=c.id 
LEFT OUTER JOIN user_cat d ON d.userid='$user_id' AND d.user_id=a.userid 
WHERE ACTIVE = ? ORDER BY a.date desc"; 
$q = $this->db->query($query_str, $active); 

user_cat表

+-----+--------+--------+---------+-----------------+ 
| id | userid | cat_id | user_id | fbid   | 
+-----+--------+--------+---------+-----------------+ 
| 295 | 268 |  52 |  277 | 100001077604247 | 
| 296 | 268 |  52 |  271 | 100000021742637 | 
| 297 | 268 |  53 |  276 |    0 | 
| 298 | 268 |  53 |  272 | 100000038821713 | 
| 299 | 268 |  53 |  275 |    0 | 
+-----+--------+--------+---------+-----------------+ 
+0

什麼問題嗎? –

+0

如果用戶包含在某個類別中,如何爲每個條目返回cat_id? – Ciprian

+0

把你的桌子的結構,並清楚地告訴我們你真正想要什麼? –

回答

4

變化對user_cat表的連接到

LEFT JOIN (select userid, cat_id from user_cat group by user_id) AS d ON d.userid='$user_id' AND d.user_id=a.userid 

這可能有助於

+0

'LEFT JOIN(選擇用戶ID,GROUP_CONCAT(CAT_ID)AS CAT_ID,從user_cat組USER_ID由USER_ID)爲d ON d.userid = '$ user_ID的' AND d.user_id = a.userid' 我沒有像這樣,它的正是我需要的。 – Ciprian

+0

高興它可以幫助你,只是瓦納份額一兩件事,據我所知GROUP_CONCAT爲1024個字符的限制;不知道它是否可以延長。所以如果你的數據超過它,它會修剪它。 – Junaid

+0

謝謝你的額外提示。我懷疑它會超過這個。 – Ciprian