2013-07-30 13 views
8

OK, mam problem z dołączeniem 2 tabel (z DOŁĄCZENIEM WEWNĘTRZNYM). Pierwsza tabela containts Lista kategorii, podczas gdy druga tabela zawiera „dane”WEJŚCIE WEWNĘTRZNE MYSQL z możliwymi pustymi polami

próbowałem tak (ECC do albumów fotograficznych lub blogach.):

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 

To daje mi sprawiedliwy rezultat, łącząc moje tabele ładnie, tak jak ja chcę z jednym kluczowym wyjątkiem.

Jeśli tabela "zdjęcia" nie ma wiersza zawierającego "photos_gal_id" (na przykład "2"), to NIE zwróci żadnej kategorii (galeries_id, galeries_title) dla tej kategorii, nawet jeśli ma ona postać w galeriach stół.

Logiczne jest, ze względu na:

ON galeries.galeries_id=photos.photos_gal_id 

Teraz muszę przyjąć tę rolę, aby pokazać mi nawet thoes który nie posiada powiązanego wiersza w drugiej tabeli

Wynikiem jestem próbuje dostać się:

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

mam nadzieję, że wyjaśniłem to wystarczająco dobre :) Dziękuję ..

Odpowiedz

20

Aby zachować wiersze z galeries bez ID pasującym na zdjęciach, trzeba dołączyć zdjęcia w galeriach z LEFT JOIN zamiast 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 

 

To daje:

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

 

A jeśli wy sh zastąpić NULL z pustym ciągiem znaków, można użyć:

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

Dziękuję bardzo za to ... to było dokładnie to, czego potrzebowałem. – wordman

+0

co jeśli po prostu chcę uzyskać wiersz z photos_id = null –

1

nie byłoby to po prostu być

LEFT JOIN photos 

Ponieważ chcesz rekordy reguardless z wether lub nie są wypełnione?

Powiązane problemy