2012-04-26 180 views
0
 **TableFruits**      **TableNames** 
    RecId RId  FruitId  Price   RId FruitId  Name 
    1  A1  Null   3$   A1  1  Mango 
    2  A2   2    4$   A2  2  Tomato 

由於FruitId下還有空在TableFruits我想從表名取像內部連接的內部連接?

Select a.RecId,a.RId,b.FruitId from TableFruits a INNER JOIN TableNames b on a.RId=b.RId 
  1. 我該如何申請在此SQL語句加入到包括從表2 FruitNames(我不能改變表的順序)
+0

什麼是你想要的輸出? – Jatin 2012-04-26 06:13:11

+0

我想在RecId,RId,FruitId,Names等結果中使用類似的東西。 – 2012-04-26 06:16:05

+1

當一個表中存在「RID」時,它是否也存在於另一個表中?或者有不匹配? – 2012-04-26 06:18:22

回答

2
SELECT a.RecId 
    , a.RId 
    , COALESCE(a.FruitId, b.FruitId) AS FruitId 
    , b.Name 
FROM TableFruits a 
    JOIN TableNames b 
    ON b.RId = a.RId ; 

既然你CAN H在RId不匹配,你需要一個外連接。 LEFT,RIGHTFULL,取決於哪一側可能出現不匹配。

MySQL沒有FULL JOIN,所以你可以做這樣的事情:

SELECT a.RecId 
    , a.RId 
    , COALESCE(a.FruitId, b.FruitId) AS FruitId 
    , b.Name 
FROM TableFruits a 
    LEFT JOIN TableNames b 
    ON b.RId = a.RId 

UNION ALL 

SELECT NULL 
    , NULL 
    , b.FruitId 
    , b.Name 
FROM TableFruits a 
    RIGHT JOIN TableNames b 
    ON b.RId = a.RId 
WHERE a.RId IS NULL ; 
+0

謝謝ypercube。這就像一個魅力! – 2012-04-26 08:27:14

2
Select a.RecId,a.RId,a.FruitId, b.Name 
from TableFruits a 
LEFT OUTER JOIN TableNames b on a.RId=b.RId 
+0

你可以通過在我的查詢中應用內部連接來做到這一點嗎?這只是一個例子。 – 2012-04-26 06:15:18

+0

@DamienJoe:查看ypercube的回答。 – 2012-04-26 06:49:08