使用左连接语法 SQL

Using left join syntax SQL

我有 3 个表:

**user**
idnumber | fullname
2015-01    sample doe

**Equipment**
id | Equipment
1     mic
2    Extension

**Reservation_list**
id | idnumber | reserve_slot | description | equip_id |
1    2015-011       1           sample         1
2    2015-011       2           sample2        2


**reservation slots**
id | reservation_int | reservation_out
 1     10:00               12:00
 2     1:00                2:00

我在这里获取身份证号码:

index.php?idnumber=?2015-011

$idnumber = $_GET['idnumber'];

怎么会是这样的结果:(正如你所看到的2个表连接reservation_list和reservation_slots

reservation_int | reservation_out | description | equipment |
    10:00               12:00          sample      mic
     1:00                2:00          sample2    extension

如你所见,它显示了“2015-011”的所有记录。

我不确定您是否需要 LEFT JOIN。一个简单的 INNER JOIN 会更有效率并且给你你所需要的:

SELECT
    RS.reservation_int,
    RS.reservation_out,
    RL.description
FROM
    user
    INNER JOIN Reservation_List RL ON user.idnumber = RL.idnumber
    INNER OUTER JOIN Reservation_Slots RS ON RL.ID = RS.ID
WHERE user.idnumber = '2015-011'

如果您的要求发生变化并且需要列出有关 user 的信息和任何预订类型信息(如果可用)。然后你可以切换到 LEFT OUTER JOIN.

SELECT R1.description,
       R2.reservation_int,
       R2.reservation_out 
  FROM user AS u 
    INNER JOIN reservation_List AS R1 ON (u.idnumber = R1.idnumber) 
    INNER JOIN equipment as E ON(E.id = R1.equip_id)
    INNER JOIN reservation_slots AS R2  ON(R1.reserve_slot = R2.id) 
  WHERE u.idnumber = "2015-011"