0
      **TableFruits**                        **TableNames**
   RecId    RId      FruitId       Price         RId  FruitId       Name
     1      A1        Null           3$           A1      1        Mango
     2      A2         2             4$           A2      2       Tomato

TableFruits の FruitId の下に Null があるので、TableNames のように取得したい

Select a.RecId,a.RId,b.FruitId from TableFruits a INNER JOIN TableNames b on a.RId=b.RId 
  1. この SQL ステートメントに結合を適用して、テーブル 2 の FruitNames を含めるにはどうすればよいですか (テーブルの順序を変更することはできません)。
4

2 に答える 2

2
Select a.RecId,a.RId,a.FruitId, b.Name
from TableFruits a 
LEFT OUTER JOIN TableNames b on a.RId=b.RId 
于 2012-04-26T06:04:47.183 に答える
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  ;

で不一致が発生する可能RId性があるため、外部結合が必要です。LEFTRIGHTまたはFULL、不一致が発生する可能性がある側に応じて。

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  ;
于 2012-04-26T06:20:01.840 に答える