2013-07-30 19 views
8

Tamam, 2 tabloya katılmayla ilgili bir sorunum var (INNER JOIN ile). İlk tablo kategorileri listesini containts ikinci tablo böyle çalıştı "veri"Mümkün olan boş alanlara sahip MYSQL INNER JOIN

taşıdığı sürece (ecc fotoğraf albümleri veya blog gönderileri için.):

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 

Bu bana adil bir sonuç verir, benim tabloları birleştirme Güzel bir şekilde, onları çok önemli bir abla ile istediğim gibi.

"Fotoğrafları" tablosunda "photos_gal_id" (örneğin "2") içeren bir satır yoksa, bu kategori için herhangi bir kategori (galeries_id, galeries_title) döndürmeyecektir. tablo.

ON galeries.galeries_id=photos.photos_gal_id 

Şimdi ikinci tabloda

Ben sonuç ilgili satırı yok ki hatta thoes bana göstermek için bu bölümü kabul etmesi gerekir: nedeniyle

çok mantıklı almaya çalışırken geçerli:

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

Ben iyi izah umut yeterince :) .. teşekkürler

cevap

20

fotoğrafları eşleşen kimliğiyle galeries satırları korumak için, LEFT JOIN yerine INNER JOIN ile galeries fotoğrafları katılmak gerekir:

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 

 

Bu size verecektir:

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

 

Ve eğer wi Boş bir dize ile NULL yerine sh kullanabilirsiniz:

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

Bunun için çok teşekkür ederim ... ihtiyaç duyduğum kadarıyla. – wordman

+0

Ya sadece satırları photos_id = null ile almak istersem –

1

bu sadece bir

LEFT JOIN photos 

olmaz sen Hava ait reguardless kayıtlarını isteyen ya da doldurulur değil diye mi?