2012-08-11 3 views
0

Я не вижу, что не так в этом запросе. Я получаю сообщение об ошибке сказав:SQL - Неоднозначная колонка

«колонна article_id в из п неоднозначна»

Я понимаю, что это может иметь что-то делать с именем таблицы псевдонимов, но не уверены в том, как исправить. Если бы запрос был меньше, я мог бы что-то сработать, но это довольно запутывает меня, и каждый раз, когда я что-то меняю, чтобы попытаться исправить, что-то еще останавливается, поэтому я решил сначала спросить.

SELECT bt.topic_title, f.article_id, p.photo_id, ba.title, ba.slug, 
IFNULL(c.cnt,0) comments, IFNULL(ph.cnt,0) photos, IFNULL(v.cnt,0) videos 
FROM blog_article_followers AS f 
LEFT OUTER JOIN (
    SELECT article_id, COUNT(comment_id) as cnt 
    FROM blog_comments 
    GROUP BY article_id) c 
    ON f.article_id = c.article_id 
LEFT OUTER JOIN (" _ 
    SELECT article_id, COUNT(photo_id) as cnt 
    FROM photos 
    GROUP BY article_id) ph 
    ON f.article_id = ph.article_id 
LEFT OUTER JOIN (
    SELECT article_id, COUNT(video_id) as cnt 
    FROM videos 
    GROUP BY article_id) v 
    ON f.article_id = v.article_id 
LEFT JOIN blog_topics bt ON f.topic_id = bt.topic_id 
LEFT JOIN blog_articles AS ba USING (article_id) 
LEFT JOIN photos AS p USING (article_id) 
WHERE f.member_id = 100 AND p.cover = 1 
ORDER BY f.follow_date DESC; 

ответ

1

Попробуйте заменить это:

LEFT JOIN blog_articles AS ba USING (article_id) 
LEFT JOIN photos AS p USING (article_id) 

С этим

LEFT JOIN blog_articles AS ba ON f.article_id = ba.article_id 
LEFT JOIN photos AS p ON f.article_id = photos.article_id 
0

вы должны переименовать столбец

LEFT JOIN photos AS p USING (p.article_id) 

или какой таблице article_id принадлежит

Смежные вопросы