2011-06-02 33 views
0

我的sqlite3的數據庫上運行以下查詢:Sqlite查詢錯誤:不明確的列名?

SELECT file.id AS fileID, file.path 
FROM file 
JOIN (SELECT tag_file_map.fileID,tag.tagname 
    FROM tag_file_map, tag JOIN tag ON tag_file_map.tagID = tag.id) 
ON tag_file_map.fileID = file.id 
WHERE tag.tagname = 'tag1' AND tag.tagname= 'tag2'; 

它給了我下面的錯誤:"ambiguous column name: tag.tagname"

谷歌似乎是說,這個錯誤時產生一個或多個表共用列名並且沒有指定該列的特定表格。但是,這裏指定了表名稱。另外,整個數據庫中沒有其他名稱爲「tagname」的列,所以它不應該含有或不含表名。這是一個SQLite問題,或者是我的語法關閉?

回答

1

你內部的選擇,改變

FROM tag_file_map, tag JOIN tag on tag_file_map.... 

FROM tag_file_map JOIN tag on tag_file_map.... 
+0

我不能這麼做 - 那麼它給錯誤'沒有這樣的列:tag.tagname',因爲表'標記'沒有出現在語句中。 – pyTech 2011-06-02 15:06:37

0

我認爲這會工作...

SELECT file.id AS fileID, file.path 
FROM file 
JOIN 
(SELECT tag_file_map.fileID, tag.tagname FROM tag_file_map 
JOIN tag ON tag_file_map.tagID = tag.id 
WHERE tag.tagname = 'tag1' AND tag.tagname= 'tag2') 
ON tag_file_map.fileID = file.id; 
+0

現在它告訴我「沒有這樣的列:tag_file_map.fileID」 – pyTech 2011-06-06 19:00:38

+0

當你自己運行內部查詢時,你是否得到任何返回的記錄? – Leslie 2011-06-07 13:22:05