我有三个表 Company、User 和 Address。
公司有三个字段
- comp_id(PK)
- 公司名称
- user_id(FK)
- to_address_id(FK)
from_address_id(FK)
地址有字段:
- address_id(PK)
- 城市
状态
用户有字段 user_id(PK),user_name
to_address_id 和 from_address_id 都是外键,引用同一个表Address,映射到address_id
现在的重点是如何从表中检索 from_address,我能够从此查询中检索 to_address。
在这里,我可以从 Shipment 表中获取 to_address_id 和 from_address_id,但是如何根据 address_id 在同一查询中获取这两个地址:
SELECT s.comp_name,u.user_name,a.city FROM company s JOIN User u JOIN Address a ON s.user_id = u.user_id AND s.to_address_id = a.address_id WHERE s.user_id = 1001;
最佳答案
解决方案 - 您需要加入两次,每次针对您感兴趣的每个 FK:
SELECT s.comp_name, u.user_name, a_from.city AS city_from, a_to.city AS city_to
FROM company s
LEFT JOIN User u ON s.user_id = u.user_id
LEFT JOIN Address a_from ON s.from_address_id = a_from.address_id
LEFT JOIN Address a_to ON s.to_address_id = a_to.address_id
WHERE s.user_id = 1001;
关于mysql - 如何从外键表访问数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27702863/