2011-07-13 74 views
1

我有三個表任務和TaskTag和標籤,如下..幫助使用SQLite查詢

CREATE TABLE Task (task_id text PRIMARY KEY, subject text); 
CREATE TABLE TaskTag (task_tag_id text PRIMARY KEY, task_id text, tag_id text); 
CREATE TABLE Tag (tag_id text PRIMARY KEY, tag text); 

我想找到Task記錄,其中有兩個匹配的標籤:標籤1,標籤2

如何將在SQL的樣子,我都試過,但我不能讓這個用來工作和,但可以使用OR ..

SELECT * 
    FROM Task 
    JOIN TaskTag ON Task.task_id = TaskTag.task_id 
    JOIN Tag ON TaskTag.tag_id = Tag.tag_id 
WHERE tag = "tag1" 
    AND tag = "tag2" 
+0

@Joe Tuskan:請不要回復原來的措辭 - 這是浪費我們的選票,並沒有提供任何價值。將來編輯時請更明智。 –

回答

2

用途:

SELECT * 
    FROM Task 
    JOIN TaskTag ON Task.task_id = TaskTag.task_id 
    JOIN Tag ON TaskTag.tag_id = Tag.tag_id 
    WHERE tag IN ('tag1', 'tag2') 
GROUP BY Task.task_id 
    HAVING COUNT(DISTINCT tag) = 2 

HAVING COUNT(DISTINCT ...)需要等於IN參數的數量,否則您可能會看到誤報(tag1的IE重複項會計爲2等)。