Ошибка запроса Sqlite: неоднозначное имя столбца?

Я выполняю следующий запрос в базе данных 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, кажется, говорит, что эта ошибка возникает, когда одна или несколько таблиц имеют общее имя столбца, а конкретная таблица столбца не указана. Однако здесь указано имя таблицы. Кроме того, во всей базе данных нет другого столбца с именем «имя тега», поэтому он не должен быть двусмысленным с именем таблицы или без него. Это проблема sqlite или что-то не так с моим синтаксисом?


person pyTech    schedule 02.06.2011    source источник


Ответы (2)


на вашем внутреннем выборе, измените

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

to

FROM tag_file_map JOIN tag on tag_file_map....
person RTIndy    schedule 02.06.2011
comment
Я не могу этого сделать - тогда выдается ошибка «Нет такого столбца: tag.tagname», потому что таблица «tag» не отображается в операторе. - person pyTech; 02.06.2011

Я думаю, это сработает...

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;
person Leslie    schedule 02.06.2011
comment
Теперь он говорит мне, что нет такого столбца: tag_file_map.fileID - person pyTech; 06.06.2011
comment
вы получаете какие-либо записи, возвращаемые при выполнении внутреннего запроса? - person Leslie; 07.06.2011