13

セットアップ: (1) 従業員テーブル (employeeID、firstName、lastName)

(1) 靴テーブル (shoeID、Employee_employeeID、shoeName、shoeColor、shoeBrand)

Employee テーブルのすべての行を選択したいのですが、靴のテーブルに一致する EmployeeID (Employee_EmployeeID) がない場合でも、その行全体が表示されます。望ましい出力の例:

 EmployeeID  | firstName    | lastName    | shoeName     |   shoeColor  | shoeBrand

 1            John           Smith         AirMax2          Red          Nike
 2            Ronald         Mcdonald      null             null         null
 3            James          Knight        null             null         null
 4            Cindy          Smith         Pump             Brown        Cole Haan

私は多くの異なる結合を試みましたが、従業員ごとに重複した行を取得します。

4

3 に答える 3

26

これを試して

   SELECT e.employeeId,e.firstName,e.lastName,s.ShoeName,s.ShoeColor,s.ShoeBrand 
   FROM    Employee e
   LEFT JOIN Shoe s
   ON e.employeeID = s.Employee_employeeID

デモSQLFIDDLEはこちら

于 2013-02-06T23:03:03.143 に答える
9

必要なものleft outer join:

select e.employeeid, e.firstname, e.lastname, s.shorname, s.shoecolor, s.shoebrand
from employee e left outer join
     shoe s
     on e.employeeid = s.employeeid
于 2013-02-06T22:56:21.133 に答える
6

を使用したいと思うでしょうLEFT JOIN:

select e.employeeId,
  e.firstName,
  e.lastName,
  s.ShoeName,
  s.ShoeColor,
  s.ShoeBrand
from Employee e
left join shoe s
  on e.employeeID = s.Employee_employeeID

デモで SQL Fiddle を参照してください

は、テーブルに一致する行がない場合でも、テーブルから一致するLEFT JOIN行を返します。employeeshoe

JOIN構文を学習するのに助けが必要な場合は、 join の優れた視覚的な説明があります

ここで、両方のテーブルに一致するすべての行が必要な場合は、INNER JOIN.

于 2013-02-06T22:56:47.163 に答える