2013-06-07 15 views
18

Chcę dołączyć dwie tabele, nawet jeśli nie pasują do drugiej.prawo sprzężenia, nawet jeśli wiersz na drugiej tabeli nie istnieje

stół użytkownika:

uid | name 
1  dude1 
2  dude2 

konto tabela:

uid | accountid | name 
1  1   account1 

stół chcę:

uid | username | accountname 
1  dude1  account1 
2  dude2  NULL 

kwerendy próbuję z:

SELECT user.uid as uid, user.name as username, account.name as accountname 
FROM user RIGHT JOIN account ON user.uid=accout.uid 

co mi chodzi:

uid | username | accountname 
1  dude1  account1 
+9

Użyj LEFT JOIN. – MicSim

+0

wypróbowany już .. – coiso

+6

Lol ... lawina odpowiedzi "left join". –

Odpowiedz

22

korzystanie Left Join zamiast

SELECT user.uid as uid, user.name as username, account.name as accountname 
FROM user LEFT JOIN account ON user.uid=accountid.uid 
4

spróbować z LEFT JOIN zapytania

SELECT user.uid as uid, user.name as username, account.name as accountname 
FROM user 
LEFT JOIN account 
ON user.uid=accout.uid 

chciałbym trzeba spojrzeć na ten wizualnej reprezentacji JOIN query

4

Prawa dołącz s wszystkie wyniki z drugiej tabeli (zachowuje wszystkie wyniki w tabeli po prawej stronie), chcesz połączyć lewe lub zamienić pozycje użytkownika i konta w klauzuli łączenia.

SELECT user.uid as uid, user.name as username, account.name as accountname 
FROM user LEFT JOIN account ON user.uid=account.uid 

Uważam, że powinienem to zrobić.

+1

'użytkownik' nie jest zastrzeżonym słowem kluczowym w mysql http://dev.mysql.com/doc/refman/5.0/en/reserved-words.html – Fabio

+0

Tak, właśnie to sprawdziłem, dzięki za poprawkę. –

Powiązane problemy