create view all_table as
begin
SELECT *
FROM offices o
inner join countries c on c.id = o.countryid
inner join users u on u.officeid = o.id
inner join roles r on r.id = u.roleid
inner join airports a on a.countryid = c.id
inner join routes ro on ro.arrivalairportid = a.id and ro.departureairportid = a.id
inner join schedules s on s.routeid = ro.id
inner join aircrafts ai on ai.id = s.aircraftid
end
create view all_table as
SELECT *
FROM offices o
inner join countries c on c.id = o.countryid
inner join users u on u.officeid = o.id
inner join roles r on r.id = u.roleid
inner join airports a on a.countryid = c.id
inner join routes ro on ro.arrivalairportid = a.id
inner join airport a2 on ro.departureairportid = a2.id
inner join schedules s on s.routeid = ro.id
inner join aircrafts ai on ai.id = s.aircraftid
代码改成这样基本就没什么问题了,说的那个问题是因为每一个表中都有一个叫做ID的字段,所以不可以直接使用*查询,需要取别名才可以
看不懂图,就将表这边连接,那边连接,然后就好了
额......我可能是个小白
@柳芽: 不要着急,你先将主表跟其中的一个表先连接,一个连接起来了,试试两个,在试试三个。。。试着试着你发现,差不多都一样的
@华临天下: 谢谢您的热情回复
create view v_port(自己命名) as
select *
from office a inner join Users b on a.ID=b.QliaceID
inner join Roles c on b.RoleID=c.ID
inner join Countries d on a.countryid=d.id
inner join Airports e on e.countryID=d.id
inner join routcs f on e.id=f.arrayairportID and e.id=DepartureAirportID
inner join Schcdulcs g on f.id=g.routcID
inner join Aircrafts h on g.AirportID=h.id
可以选择left join (左关联或者右关联) 关键字段有些看不清楚,自己对一对。
谢谢您的热情回复
1. 评论里有提到这一点 “ 不能用* 来查询所有字段,因为各个表都有相同的field,这里篇幅有限,就不一一列出,请把每个表的字段根据简称list出来 ”
2. 如果用左右关联的话,会多出一些数据,请根据自己的需求来确定关联选择
现在所有都问题解决了么?如果还有异常,可以贴出来一起看看
@筱筱的春天: 是的,可以 表名.field 列出所有需要查询得字段 才是比较规范的写法
1.Routes表的两个外键DepartureAireportID 和ArrivalAirportID 都=Airports的ID,这个好奇怪,确定没有画错?
3.请执行一下,如有报错,请贴出来,我们继续共同找下问题原因
@筱筱的春天: 首先第一个问题是因为routes表是线路表,两个字段分别为出发地和目的地,所以都来自与airports(机场)表
– 柳芽 6年前@筱筱的春天: 运行会出现以下报错:Column names in each view or function must be unique. Column name 'ID' in view or function 'all_table' is specified more than once.
– 柳芽 6年前每个视图或函数中的列名必须是唯一的。在视图或函数“all_table”中指定列名“ID”的次数不止一次。
@柳芽: 评论里有提到这一点 “ 不能用* 来查询所有字段,因为各个表都有相同的field,这里篇幅有限,就不一一列出,请把每个表的字段根据简称list出来 ”
现在问题解决了么?
– 筱筱的春天 6年前@筱筱的春天: 你好,问题基本解决了,我把每个表的字段都起了别名
– 柳芽 6年前