[英]MySQL multi table join query
需要的结果:贝尔斯登格拉斯哥办公室讲师使用的汽车的注册号。 我拥有的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’
有人可以填写空白,以便我学习如何执行此操作吗?我需要制作一张新桌子吗?
至于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
相同。 这是考虑JOIN语法的MySQL手册
您查询的很有可能需要看起来像这样:
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
的同义词。
我还没有测试过,但这应该会有所帮助。
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')
您缺少的是表之间的联接。 您需要加入中介表才能获得职员表和汽车表之间的关系。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.