0
加入我在的SQLite 3的模式,看起來像下面這樣:麻煩全在sqlite3的
CREATE TABLE tags(id INTEGER PRIMARY KEY, tag TEXT NOT NULL, UNIQUE(tag));
CREATE TABLE files(id INTEGER PRIMARY KEY, name TEXT NOT NULL, UNIQUE(name));
CREATE TABLE filetags(file_id INT NOT NULL, tag_id INT NOT NULL, UNIQUE(file_id, tag_id), FOREIGN KEY(file_id) REFERENCES files(id), FOREIGN KEY(tag_id) REFERENCES tags(id));
我一直想編寫一個查詢,對於一個給定的文件編號,顯示每一個標籤並且該標籤是爲該ID設置的。我能得到最接近的是類似以下內容:
SELECT * FROM tags t
LEFT OUTER JOIN filetags ft ON ft.tag_id=t.id
LEFT OUTER JOIN files f ON f.id=ft.file_id WHERE [email protected] OR
f.id IS NULL
,會在具有1個或多個標籤的文件工作,但對於沒有標籤的文件時,它排除了所有具有至少一個文件中的標籤。我已經嘗試了一些這樣的變體,但似乎受到必須解決sqlite缺乏完整和正確連接的限制。
也許有用嗎? http://stackoverflow.com/questions/1923259/full-outer-join-with-sqlite –