2013-07-30 11 views
8

いいえ、INNER JOINを使って2つのテーブルを結合する際に問題があります。最初の表は、カテゴリリストcontaints第二のテーブルは、私はこのようにしようとした「データ」空のフィールドを持つMYSQL INNER JOIN

が含まれていながら(ECCをフォトアルバム、またはブログの記事のために。):

SELECT galeries_id, galeries_title, 
     photos.photos_id, photos.photos_gal_id, photos.photos_link 
FROM galeries 
INNER JOIN photos 
ON galeries.galeries_id=photos.photos_gal_id 
GROUP BY photos_gal_id 

これは私に公正な結果を与え、私のテーブルを結合しますうまくいけば、私は彼らに1つの重要な例外を付けてほしいと思うのです。

"photos_"テーブルに "photos_gal_id"(たとえば "2")を含む行がない場合、galeriesでegzistを実行しても、そのカテゴリのカテゴリ(galeries_id、galeries_title)は返されません。表。

ON galeries.galeries_id=photos.photos_gal_id 

今、私は2番目のテーブルに

私は結果を関連する行を持たないにもthoes私を表示するには、この部分を採用する必要がありますのため

それは論理的です取得しようとすると、次のとおりです。

galeries_id  galeries_title  photos_id  photos_link 
    1    blabla    3   test.jpg 
    2    bla bla2          
    3    etata    5   test.jpg 

私は十分にそれが良い説明を願っ:) いただきありがとうございます。..

答えて

20

写真に一致するIDでgaleriesから行を保持するには、あなたがLEFT JOINの代わりINNER JOINとガルリの写真に参加する必要があります。

SELECT galeries_id, galeries_title, 
     photos.photos_id, photos.photos_gal_id, photos.photos_link 
FROM galeries 
LEFT JOIN photos 
ON galeries.galeries_id=photos.photos_gal_id 
GROUP BY photos_gal_id 

 

これはあなたを与える:

galeries_id  galeries_title  photos_id  photos_link 
    1    blabla    3   test.jpg 
    2    bla bla2   NULL   NULL     
    3    etata    5   test.jpg 

 

空の文字列とNULLを置き換えるために、SH、あなたが使用することができます。あなたはそれらが満たされている天気をかいないの記録reguardlessをしたいので

SELECT 
    IFNULL(photos.photos_id, ''), 
    IFNULL(photos.photos_link, '') 
+0

ありがとうございました...これは私が必要としていたものでした。 – wordman

+0

photos_id = nullで行を取得したいだけの場合 –

1

はそれだけで

LEFT JOIN photos 

と思いませんか?