2012-10-11 210 views
0

假設一個對象可以有多個TIDGROUP CONCAT和GROUP BY問題

現在假設我這樣做查詢:

SELECT n.nid, t.tid, GROUP_CONCAT(t.tid) 
FROM node n JOIN term_node t ON t.nid = n.nid 
GROUP BY n.nid 
HAVING t.tid = 31; 

在這我想獲取在具有TID = 31表節點條目。 ..但是,我還想要一個與該行(即GROUP_CONCAT)相對應的所有tid的列表,即使它們不是31

使用WHERE t.tid = 31將忽略不是31的tid GROUP concat 並且使用HAVING t.tid = 31將會忽略wh中的行ICH出現的分組行的TID列不是31

無論哪種方式具有使GROUP_CONCAT清單不完整的潛在或節點的至少一個TID = 31不全

行是否有辦法解決這個問題,我保證得到節點至少有一個tid關聯等於31的所有節點,並且GROUP_CONCAT將列出所有與該節點關聯的tid列表?

回答

0

這可能會更好2查詢。 GROUP_CONCAT對產生的字符串可能有多長時間有限制,所以它是不可靠的,除非你知道你總是會在字符串長度限制之下。

我會運行第一個查詢'WHERE tid = 31',然後運行一個單獨的查詢來獲取所有其他ID,然後在代碼中進行組合。