2009-08-12 6 views
0

J'ai une page de catégorie dans laquelle j'affiche toutes les images appartenant à une catégorie particulière ... J'ai aussi une liste déroulante avec laquelle je peux trier les images en fonction du nombre d'histoires écrites pour cette image ... Pour ce faire, je suis en utilisant JOIN coz médias et l'histoire sont deux tables différentes ...mysql join statement

media table has mediaid,catid,userid,link 

et

story table has storyid,mediaid,storyheading,storycontent 

J'utilise instruction JOIN de cette façon ...

SELECT count(story.id) as cnt,story.mediaid as id,media.cat_id,media.link,media.userid 
FROM story RIGHT JOIN 
media ON story.mediaid=media.mediaid where cat_id='25' group by story.mediaid order by cnt desc limit 0,8 

mais je ne reçois que les images qui ont des histoires ... je voulais tout le résultat de sorte que même s'il n'y a pas d'histoire pour une image particulière, nous pouvons montrer 0 histoires ... pouvons-nous faire cela en ne changeant pas structure de la table et juste changer la déclaration SQL? S'il vous plaît aider ... -

Répondre

0

Vous devez retourner votre SQL et utilisez LEFT JOIN à la place:

SELECT count(story.id) as cnt, media.mediaid, media.catid, media.userid, media.link 
    FROM media LEFT OUTER JOIN story ON media.mediaid = story.mediaid 
WHERE media.catid = '25' 
GROUP BY media.mediaid, media.catid, media.userid, media.link 
ORDER BY cnt DESC 
+0

thank u très bien ...^_ ^ – Sakura

0

le right join est ok, le group by story est le problème: vous voulez groupe d'images, ne pas vous?

essayez plutôt group by media.mediaid!

+0

thank u ur aide ...^__^ – Sakura