0

sqlite3 データベースで次のクエリを実行しています。

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"

Google は、1 つ以上のテーブルが列名を共有し、列の特定のテーブルが指定されていない場合に、このエラーが発生すると言っているようです。ただし、ここでは、テーブル名が指定されています。さらに、データベース全体に「tagname」という名前の列は他にないため、テーブル名の有無にかかわらずあいまいになることはありません。これは sqlite の問題ですか、それとも構文に問題がありますか?

4

2 に答える 2

1

あなたの内側で選択し、変更します

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

FROM tag_file_map JOIN tag on tag_file_map....
于 2011-06-02T14:44:38.717 に答える
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;
于 2011-06-02T19:36:03.290 に答える