SQL连接表 - 传输和位置

时间:2018-04-11 07:58:03

标签: sql join

更新了说明,以便于理解。

我已经很长时间没有使用SQL语句了,看起来简单的事情让我失望^^

我有一张桌子"运输"其中包含以下列:

  • locations_fromid
  • locations_toid
  • transport_number
  • 距离
  • ...

第二张表"位置"包含以下列:

  • ID
  • 城市
  • 国家
  • 拉链
  • ...

transports.locations_fromid和transports.locations_toid引用locations.id(外键)

问题: 1)我如何创建一个视图,它显示了所有(*)来自交通工具以及原始城市和目的地城市。

2)假设我们在传输表中有n个传输使用相同的transport_number。如何创建一个视图,将所有传输与所有被触及的城市区别开来。

示例行: 123456,汉堡,纽约,纽约,华盛顿,华盛顿,丹佛,10,000km (transportnumber,fromid,toid,fromid,toid,fromid,toid,sum(distance)

在这个例子中,我们在具有相同transport_number

的表传输中聚集了3行

我觉得我的问题的答案很简单,但我不能自己谷歌。

非常感谢 亚当

2 个答案:

答案 0 :(得分:0)

你的第一个问题: 我相信这应该有用

SELECT transports.*, FromCity.City, ToCity.City FROM transports 
LEFT OUTER JOIN Locations FromCity ON transports.fromid = Locations.id
LEFT OUTER JOIN Locations ToCity ON transports.toid = Locations.id

第二个问题中的'1122'是传输表上的ID吗?

答案 1 :(得分:0)

SELECT 
	transports.*, FromCity.adress_city SOURCE, ToCity.adress_city  DESTINATION
	FROM  
	transports
LEFT OUTER JOIN 
	locations FromCity 
	ON 
	transports.locations_fromid = FromCity.id
LEFT OUTER JOIN 
	locations ToCity 
	ON 
	transports.locations_toid = ToCity.id

这解决了我的第一个问题。感谢@happyChap