2012-03-21 2 views
0

Le site contient des images. Ces images peuvent être classées. Quand une image est classée, la valeur peut être 1,2, ou 3. Pour enregistrer le classement, j'ai un tableau ranking_items. Les images sont affichées sous forme de vignettes. Le patron voudrait que je les ordonne par rang. le problème est, comment puis-je également inclure des images dans le résultat sans entrée dans le ranking_items?besoin de point de départ sur un ORDER BY

$db->query("SELECT file_name 
    FROM images, ranking_items 
     WHERE images.id=ranking_items.image_id 
     ORDER BY ranking_items.rank ASC"); 

Répondre

0

Lorsque vous faites FROM table1, table2 vous faites JOIN.

Essayez d'utiliser LEFT JOIN la table ranking_items. Cela retournera toutes les lignes, et mettra NULLS dans les endroits où la jointure échoue.

SELECT file_name 
FROM images 
LEFT JOIN ranking_items ON images.id=ranking_items.image_id 
ORDER BY ranking_items.rank ASC 
+0

cela a fonctionné, je vous remercie. est-il sûr de dire que la jointure à droite n'inclurait pas les nulls? –

+1

'RIGHT JOIN' est l'opposé de' LEFT JOIN'. Ce qui signifie que les NULL seraient là où les lignes n'existent pas dans la table 'images', par rapport à' LEFT JOIN' qui ajoute des valeurs NULL lorsque la ligne n'existe pas dans la table 'ranking_items'. Pour plus d'informations voir: http://stackoverflow.com/questions/5706437/whats-the-difference-between-inner-join-left-join-right-join-full-join-in-mys –

0
SELECT file_name 
FROM images LEFT JOIN ranking_items 
ON images.id=ranking_items.image_id 
ORDER BY ranking_items.rank ASC 
Questions connexes