2013-06-07 10 views
18

Voglio unire due tabelle anche se non c'è corrispondenza sul secondo.join destro anche se la riga sul secondo tavolo non esiste

utente tabella:

uid | name 
1  dude1 
2  dude2 

conto tavolo:

uid | accountid | name 
1  1   account1 

tavolo voglio:

uid | username | accountname 
1  dude1  account1 
2  dude2  NULL 

la query che sto cercando con:

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

quello che sto ricevendo:

uid | username | accountname 
1  dude1  account1 
+9

Utilizzare un SINISTRA SINISTRA. – MicSim

+0

provato già .. – coiso

+6

Lol ... valanga di risposte "left join". –

risposta

22

uso Left Join invece

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

Prova con una query LEFT JOIN

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

mi piacerebbe di avere uno sguardo a questa rappresentazione visiva di JOIN query

4

Right join keep s tutti i risultati della 2a tabella (mantiene tutti i risultati sulla tabella di destra), vuoi un join di sinistra, o scambiare le posizioni di utente e account nella clausola di join.

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

Credo che dovrebbe farlo.

+1

'utente' non è una parola chiave riservata in mysql http://dev.mysql.com/doc/refman/5.0/en/reserved-words.html – Fabio

+0

Sì, ho appena guardato su, grazie per la correzione. –

Problemi correlati