0
我有一个表地址和一张桌子路线。MySQL查询2条记录为1个结果
路线商店地址的两个ID和这些位置之间的距离 - >idStart
,idEnd
,distance
。
+-------+-------+-----+--------+
|idRoute|idStart|idEnd|distance|
+-------+-------+-----+--------+
|0 |1 |3 |2698 |
|1 |2 |4 |914 |
+-------+-------|-----+--------+
+---------+---------+-------------+
|idAddress|country |city |
+---------+---------+-------------+
|0 |USA |Indianapolis |
|1 |Brasil |Rio |
|2 |Germany |Munich |
|3 |Argentina|Buenos Aires |
|4 |Italy |Rome |
+---------+---------+-------------+
`
所以我想查询并得到所有路线如下:
+-------+-------+-------+--------+---------+------+------------+--------+
|idRoute|idStart|idEnd |CountryS|CountryE |CityS |CityE |distance|
+-------+-------+-------+--------+---------+------+------------+--------+
|0 |1 |3 |Brasil |Argentina|Rio |Buenos Aires|2698 |
|1 |2 |4 |Germany |Italy |Munich|Rome |914 |
+-------+-------+-------+--------+---------+------+------------+--------+
如果我做了一些子查询和outerquery特定路由ID,它会因为我的工作有一个特定的其中id =#
SELECT
ro.idRoute,
ro.idStart,
ro.idEnd,
ro.distance,
ro.time,
(select a.country from address a
left join route ro
on (a.idAddress=ro.idStart)
WHERE ro.idRoute='.$id .') as country_start,
(select a.country from address a
left join route ro
on (a.idAddress=ro.idEnd)
WHERE ro.idRoute='.$id .') as country_end, FROM route ro
LEFT JOIN address a ON (a.idAddress=ro.idStart)
LEFT JOIN countries c ON (a.country=c.code)
WHERE ro.idRoute='.$id . $this -> presetFilter . ';
但在大多数情况下,我需要路由的所有记录,我不能得到这个工作因为对于子查询,我会错过where语句。
像外部查询 - >“set fieldname as outerResult
”和使用outerResult在内部查询的语句?
iguess'idAdress'与匹配'idStart'和'idEnd' – RealCheeseLord
在你写的,你有2个表,但查询有3个问题:没有列出有作为一个国家的表。 – Shadow
无论如何,这是一个重复的问题,因为你只需要加入地址表两次。也许这些国家的表现也是两倍。 – Shadow