2012-02-07 26 views
8
TABLE A >> 
uid name 
1 test1 
2 test2 
3 test3 
4 test4 

TABLE B >> 
uid address 
1 address1 
2 address2 
4 address3 

RESULT 
1 test1 address1 
2 test2 address2 
3 test3 
4 test4 address3 

Czy ktoś może mi pokazać, jak napisać zapytanie i pobrać wynik jak powyżej, Dziękuję bardzo! Próbowałem połączyć, lewy i prawy dołączyć. wszystko nic nie daje.sql dołączyć dwie tabeli

+0

w Czapka, której próbowałeś przy swoich złączeniach? Czy podejmujesz próby? –

Odpowiedz

15

można napisać LEFT OUTER JOIN pomiędzy tym dwa stoły Najlepszym sposobem, aby zrozumieć to sprawdzić Poniższy rysunek

Query do wymogu

SELECT A.uid, A.name, B.address FROM A LEFT JOIN B ON A.uid=B.uid 

czyta ten oryginalny artykuł na Kodeks Projekt pomoże bardzo dużo: Visual Representation of SQL Joins.

alt text

Znajdź oryginalną pojedynczo: Difference between JOIN and OUTER JOIN in MySQL.

+0

Są to diagramy operacji zestawu, a nie łączenia, np. jedna dolna lewa to "A UNION B", jedna w środku to "INTERSECT B", itp. – onedaywhen

+0

Uwielbiam twój diagram, wszystko tak dobrze wyjaśnij. Dzięki bardzo mcuh – Bruce

1

Mówisz spróbował LEFT JOIN, ale nie daje żadnych prób --- jeden z pierwszych prób logiczne byłoby:

SELECT A.uid, A.name, B.address 
FROM A 
LEFT JOIN B ON A.uid=B.uid 

Hej presto! daje ci to, czego szukałeś.

2
SELECT A.uid, A.name, B.address FROM A LEFT OUTER JOIN B ON A.uid = B.uid 
1

Możesz użyć dowolnego join.I napisać to zapytanie dla pełnego sprzężenia.

select A.uid,A.name,B.address from A FULL JOIN B ON A.uid = B.uid 
1

Chyba jesteś po pustej wartości, jeśli nie ma wartości dla B, czyli mający takie same UID w A.

Jeśli jest to przypadek, IFNULL zwróci wartość domyślną ty określono w przypadku parametr jest zerowy (ISNULL stosuje się MSSQL)

SELECT A.value, IFNULL(B.value, '') 
FROM A LEFT JOIN B 
ON A.uid = B.uid 

tym wytwarzane podobnie jak:

test1 address1 
test2 address2 
test3 
test4 address3 
Powiązane problemy