2012-04-29 41 views
0

我有user表和payment是多對多關係表。如何爲MySQL JOIN創建正確的語句?

SELECT user.uID, 
     user.uName, 
     user.uLocation, 
     user.uBlock, 
     user.uRoom, 
     user.uStatus, 
     payment.pID, 
     payment.pDate, 
     payment.pType 
FROM user 
     INNER JOIN payment 
     ON user.uID = payment.pID 
LIMIT 0,100 
  1. 隨着INNER JOIN的結果將是什麼。
  2. 隨着LEFT JOIN用戶顯示正確的結果,但對支付表中返回NULL
  3. 隨着RIGHT JOIN支付顯示正確的結果,但對用戶

如何得到正確的返回NULL結果顯示兩者? LEFT JOIN & RIGHT JOIN

回答

2

你想FULL OUTER JOIN

SELECT user.uID, 
     user.uName, 
     user.uLocation, 
     user.uBlock, 
     user.uRoom, 
     user.uStatus, 
     payment.pID, 
     payment.pDate, 
     payment.pType 
FROM user 
     FULL OUTER JOIN payment 
     ON user.uID = payment.pID 
LIMIT 0,100 

全外連接

概念,完全外部聯接結合應用左,右外連接的作用。在FULL OUTER JOINed表中的記錄不匹配的情況下,結果集對於缺少匹配行的表中的每一列都將具有NULL值。對於那些匹配的記錄,將在結果集中生成一行(包含從兩個表填充的字段)。

Wikipedia


對於MySQL閱讀this,你應該使用UNION

+0

對不起..我編輯的問題標籤。 MySQL看起來不像'FULL OUTER JOIN'。 – user1286499

+1

@ user1286499。更新。 – gdoron

1

您要求用戶ID等於付款ID。你是幸運的,如果返回一個空集,也可以返回完全錯誤的數據:)它可能應該是:

user.uID = payment.uID 

或者payment.userId,或什麼的。檢查付款表中的列。

+0

嗯..其實'pID'列將存儲'user.uID' – user1286499