par
Cyrano » 13 oct. 2006, 07:51
Forcément que la colonne est inconnue :
Lorsque on utilise JOIN, il faut savoir que la jointure va se faire entre la table qui précède "JOIN" et celle qui suit. Donc dans ta requête, la jointure se fait entre membres et news_comment : aucune de ces deux table ne comporte de colonne news_id.
Donc il faut placer la table news juste avant le JOIN, soit comme ceci :
Code : Tout sélectionner
SELECT news_id, news_cat_id, news_auth_id, news_title, news_date, news_last_edit, news_content, cat_id, cat_name, COUNT(comment_id) as nbre_comment, user_nick, user_id
FROM news_categories as ncat, membres as u, news as n
LEFT OUTER JOIN news_comment as ncom
ON n.news_id=ncom.comment_news_id
WHERE n.news_auth_id=u.user_id
AND ncat.cat_id=n.news_cat_id
AND news_status='1'
AND u.user_active='1'
GROUP BY news_id
ORDER BY news_date ASC;
Soit comme cela :
Code : Tout sélectionner
SELECT news_id, news_cat_id, news_auth_id, news_title, news_date, news_last_edit, news_content, cat_id, cat_name, COUNT(comment_id) as nbre_comment, user_nick, user_id
FROM news as n
LEFT OUTER JOIN news_comment as ncom
ON n.news_id=ncom.comment_news_id,
news_categories as ncat, membres as u
WHERE n.news_auth_id=u.user_id
AND ncat.cat_id=n.news_cat_id
AND news_status='1'
AND u.user_active='1'
GROUP BY news_id
ORDER BY news_date ASC;
Attention à la seconde possibilité à ne pas oublier la virgule qui termine la clause "ON" indiquant que d'autres noms de tables suivent.
Forcément que la colonne est inconnue :
Lorsque on utilise JOIN, il faut savoir que la jointure va se faire entre la table qui précède "JOIN" et celle qui suit. Donc dans ta requête, la jointure se fait entre membres et news_comment : aucune de ces deux table ne comporte de colonne news_id.
Donc il faut placer la table news juste avant le JOIN, soit comme ceci :
[code]SELECT news_id, news_cat_id, news_auth_id, news_title, news_date, news_last_edit, news_content, cat_id, cat_name, COUNT(comment_id) as nbre_comment, user_nick, user_id
FROM news_categories as ncat, membres as u, news as n
LEFT OUTER JOIN news_comment as ncom
ON n.news_id=ncom.comment_news_id
WHERE n.news_auth_id=u.user_id
AND ncat.cat_id=n.news_cat_id
AND news_status='1'
AND u.user_active='1'
GROUP BY news_id
ORDER BY news_date ASC;
[/code]Soit comme cela :
[code]SELECT news_id, news_cat_id, news_auth_id, news_title, news_date, news_last_edit, news_content, cat_id, cat_name, COUNT(comment_id) as nbre_comment, user_nick, user_id
FROM news as n
LEFT OUTER JOIN news_comment as ncom
ON n.news_id=ncom.comment_news_id,
news_categories as ncat, membres as u
WHERE n.news_auth_id=u.user_id
AND ncat.cat_id=n.news_cat_id
AND news_status='1'
AND u.user_active='1'
GROUP BY news_id
ORDER BY news_date ASC;
[/code]
Attention à la seconde possibilité à ne pas oublier la virgule qui termine la clause "ON" indiquant que d'autres noms de tables suivent.