Ошибка Sqlite Query: неоднозначное имя столбца? - PullRequest
0 голосов
/ 02 июня 2011

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

Ответы [ 2 ]

1 голос
/ 02 июня 2011

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

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

на

FROM tag_file_map JOIN tag on tag_file_map....
0 голосов
/ 02 июня 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;
...