Mysql 选择仅由19岁儿童驾驶的汽车
我只想买那些只由19岁的人驾驶的车 如果我有这些表格: 查询结果将仅为id=1和id=4的车辆 我试过了Mysql 选择仅由19岁儿童驾驶的汽车,mysql,Mysql,我只想买那些只由19岁的人驾驶的车 如果我有这些表格: 查询结果将仅为id=1和id=4的车辆 我试过了 select d.IdCar from Persons p, Drive d where d.IdPerson = p.IdPerson and p.Age = 19 但它给出了至少由一名19岁左右的人驾驶的汽车。您可以使用join获得结果。但假设您的数据库必须快速增长,那么我建议您创建视图 可以使用以下命令创建示例视图 CREATE VIEW drive_view as (
select d.IdCar
from Persons p, Drive d
where d.IdPerson = p.IdPerson and p.Age = 19
但它给出了至少由一名19岁左右的人驾驶的汽车。您可以使用join获得结果。但假设您的数据库必须快速增长,那么我建议您创建视图 可以使用以下命令创建示例视图
CREATE VIEW drive_view as (
select d.IdCar, c.Brand, d.IdPerson, p.Name, p.Age from drive d
left join Persons p on d.IdPerson = p.IdPerson
left join CARS.c on d.IdCar = c.IdCar
order by p.IdPerson ASC
);
然后,您只需使用从程序中选择查询即可。e、 g
select * from drive_view where Age = 19;
我希望这有帮助。如果您还处于开始阶段,我建议您了解一些有关联接、视图、触发器等的知识。这将对您有很大帮助。您可以使用联接来获得结果。但假设您的数据库必须快速增长,那么我建议您创建视图 可以使用以下命令创建示例视图
CREATE VIEW drive_view as (
select d.IdCar, c.Brand, d.IdPerson, p.Name, p.Age from drive d
left join Persons p on d.IdPerson = p.IdPerson
left join CARS.c on d.IdCar = c.IdCar
order by p.IdPerson ASC
);
然后,您只需使用从程序中选择查询即可。e、 g
select * from drive_view where Age = 19;
我希望这有帮助。如果您还处于初级阶段,我建议您了解一些有关联接、视图、触发器等的知识。这将对您有很大帮助。尝试以下方法:
SELECT c.IdCar, c.Brand
FROM Car c
INNER JOIN Drive d
USING (IdCar)
INNER JOIN Persons p
USING (IdPerson)
GROUP BY d.IdCar
HAVING MIN(p.Age) = 19
AND MAX(p.Age) = 19
试试这个:
SELECT c.IdCar, c.Brand
FROM Car c
INNER JOIN Drive d
USING (IdCar)
INNER JOIN Persons p
USING (IdPerson)
GROUP BY d.IdCar
HAVING MIN(p.Age) = 19
AND MAX(p.Age) = 19
所以我找到了这个解决方案,它对我很有效: 因此,我们首先创建一个随年龄变化的dirvers视图!=十九,
CREATE VIEW drive_view as (
select d.IdPerson from drive d
left join Persons p on d.IdPerson = p.IdPerson
left join CARS.c on d.IdCar = c.IdCar
Where P.age <> 19
);
所以这基本上是@Yash的相反观点:
Wich提供了所有至少由19岁左右的人驾驶的汽车。因此我找到了这个解决方案,它对我很有效: 因此,我们首先创建一个随年龄变化的dirvers视图!=十九,
CREATE VIEW drive_view as (
select d.IdPerson from drive d
left join Persons p on d.IdPerson = p.IdPerson
left join CARS.c on d.IdCar = c.IdCar
Where P.age <> 19
);
所以这基本上是@Yash的相反观点:
Wich给出了所有由至少19岁的人驾驶的汽车。连接提示是使用来自人的
p在d.IdPerson=p.IdPerson上连接驱动器d
语法,因为,
容易忘记标准。欢迎来到SO,好的第一个问题。@danblack哦,谢谢你的提示。@草莓,我想我已经提供了一个例子!!我想我已经提供了一个链接。通用汽车公司只由19岁的阿尔伯蒂普驾驶,而joins是使用d.Iderson=p.Iderson语法上的人p JOIN Drive d的,因为,
容易忘记标准。欢迎来到SO,好的第一个问题。@danblack哦,谢谢你的提示。@草莓,我想我已经提供了一个例子!!我想我已经提供了一个链接。通用汽车只由19岁的阿尔伯塔驾驶,它没有回答年龄=19岁的问题,其他什么都没有<代码>视图
使理解复杂化,如果在同一查询中存在重用,则对重用的表达式使用CTE。触发器是有目的的,但也可能指出用于预期目的的错误数据结构。请注意,针对MySQL中视图的查询无法访问底层索引,这使它们的有用性受到质疑。它不能回答年龄=19的问题,也不能回答其他任何问题<代码>视图使理解复杂化,如果在同一查询中存在重用,则对重用的表达式使用CTE。触发器是有目的的,但也可能指示用于预期目的的错误数据结构。