繁体   English   中英

MySQL多表联接查询

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM