2012-03-21 4 views
0

ウェブサイトに画像があります。これらの画像はランク付けすることができます。画像がランク付けされるとき、その値は1,2または3になります。ランク付けを保存するには、テーブルranking_itemsがあります。画像はサムネイルとして表示されます。上司は私にランクでそれらを注文するのが好きです。問題は、ranking_itemsにエントリがない画像を結果に含めるにはどうすればいいですか?注文の開始点が必要です

あなたは JOINFROM table1, table2やっているん
$db->query("SELECT file_name 
    FROM images, ranking_items 
     WHERE images.id=ranking_items.image_id 
     ORDER BY ranking_items.rank ASC"); 

答えて

0

LEFT JOIN ranking_itemsテーブルを参照してください。これにより、すべての行が戻され、結合が失敗した場所にNULLSを入れます。

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

これは働いていた、ありがとうございました。正しい結合にはnullが含まれないと言うのは安全でしょうか? –

+1

'RIGHT JOIN'は' LEFT JOIN'の反対です。 NULLが 'images'テーブルに存在しない場合、NULLが' ranking_items'テーブルに存在しないときにNULLを追加する 'LEFT JOIN'と比較してNULLを意味します。詳細は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 
関連する問題