MySQL - 嵌套外键(带多个表)

时间:2017-03-12 19:21:50

标签: mysql database join foreign-keys

我有桌子公共汽车和路线,而桌子fare_t有公共汽车和路线'主键作为外键。另一个表time_t将fare_t的主键作为外键。 现在我想进行查询并将它们连接在一起,使得查询返回表time_t中的数据,该表包含来自表fare_t的数据以及来自表总线的数据以及将其主键添加为外键的路由在表fare_t中。

如何编写查询??

我已尝试过以下内容,

SELECT bus.name, routes.route_from, routes.route_to, fare_t.fare, time_t.time FROM time_t 
INNER JOIN bus ON bus.id = fare_t.bus_id
INNER JOIN routes ON routes.id  = fare_t.route_id
INNER JOIN fare_t ON fare_t.id = time_t.fare_t_t;

它产生以下错误#1054 - Unknown column 'fare_t.bus_id' in 'on clause'

1 个答案:

答案 0 :(得分:2)

在加入之前,您似乎正在使用fare_t表,请尝试:

SELECT bus.name, routes.route_from, routes.route_to, fare_t.fare, time_t.time
FROM time_t 
JOIN fare_t ON fare_t.id = time_t.fare_t_t
JOIN bus ON bus.id = fare_t.bus_id
JOIN routes ON routes.id  = fare_t.route_id;

如果不起作用,请分享fare_t

的架构

<强>更新

出于演示目的,这里使用不同的模式重现了同样的错误:

mysql> SELECT *
    -> FROM users u
    -> JOIN user_skill uss ON uss.active = us.active
    -> JOIN user_state us ON us.uid = u.id;
ERROR 1054 (42S22): Unknown column 'us.active' in 'on clause'
mysql> 
mysql> SELECT *
    -> FROM users u
    -> JOIN user_state us ON us.uid = u.id
    -> JOIN user_skill uss ON uss.active = us.active
    -> ;
Empty set (0.01 sec)