所需结果:Glasgow,Bearsden办公室教练使用的汽车注册号。 我有3张相关表格; (我省略了不相关的表信息,以简化此操作。数据库称为easydrive。
这不是学校或UNI的任务,这是教科书中的一个问题,我们已经给予了这样做,我们可以学习如何做到这一点,没有给予分数,所以你没有做我的作业给我。
**++Staff++**
(PK) Staff ID
(FK) Address ID
(FK) Office
(FK) Car Allocation Number
First Name
Last Name
Position/Title
Office
**++CarAllocation++**
(PK) Car Allocation Number
(FK) Staff ID
(FK) Car ID
**++Car++**
(PK) Car ID
Car Rego
所以我认为我需要这样一个加入,我认为它需要沿着这些方向发展,但我很困惑。
SELECT car.rego
FROM car
WHERE staff.office=’Glasgow’ OR ‘Bearsden’
有人可以填写空白,以便我可以学习如何执行此操作,我是否需要制作新表?
答案 0 :(得分:0)
至于car_allocation
是一个中间表,最好将它放入FROM
子句和JOIN
其他子句中:
SELECT car.rego
FROM car_allocation A
JOIN car ON A.car_id = car.car_id
JOIN stuff ON A.stuff_id = stuff.stuff_id
AND (staff.office = 'Glasgow' OR staff.office = 'Bearsden' -- OR some another condition, etc)
注意括号,他们将条件分组。
或
SELECT car.rego
FROM car_allocation A
JOIN car ON A.car_id = car.car_id
JOIN stuff ON A.stuff_id = stuff.stuff_ids
AND staff.office IN ('Glasgow', 'Bearsden')
如果您有枚举,则可以使用IN
运算符。
同样JOIN
与INNER JOIN
相同。 Here's MySQL manual considering JOIN syntax
答案 1 :(得分:0)
您查询最有可能需要看起来像这样:
SELECT first_name, last_name, car_rego
FROM staff
JOIN carallocation ON (carallocation.staff_id = staff.staff_id)
JOIN car ON (car.car_id = carallocation.car_id)
WHERE staff.office = 'Glasgow' OR staff.office = 'Bearsden';
请注意,JOIN
是MySQL中INNER JOIN
的同义词。
答案 2 :(得分:0)
我没有测试过,但这应该会有所帮助。
select car.rego
from car
inner join carrallocation ca on ca.carid = car.carid
inner join staff s on ca.staffid = s.staffid
where s.office in ('Glasgow', 'Bearsden')
您缺少的是表之间的连接。您需要加入中间表以获得员工和汽车表之间的关系。