使用mysql和许多外键连接多个表

iswrvxsc  于 2021-06-18  发布在  Mysql
关注(0)|答案(1)|浏览(366)

使用mysql,我有3个表,如下所示:

locations (id, name)
products(id, description)
inventory_records(id, product_id, move_from, move_to)
``` `product_id` 是fk产品; `move_from` 以及 `move_to` 是fk到位置。
下面的查询列出了所有产品的名称及其来源。

select
products.description,
locations.name
from
inventory_records
inner join products on
products.id = inventory_records.product_id
inner join locations on
locations.id = inventory_records.move_from
limit 10;

但是我想同时列出出发地和目的地,我无法编写查询。有什么帮助吗?
dw1jzc5e

dw1jzc5e1#

你需要加入 locations 两张table。第一个连接将打开 move_from ; 第二个表连接将打开 move_to .
另外,请注意,在多表查询的情况下使用别名是一种很好的做法,以提高代码的清晰度、可读性和明确的行为。

SELECT
    products.description,
    lfrom.name AS move_from_location, 
    lto.name AS move_to_location 
FROM
    inventory_records
INNER JOIN products ON
    products.id = inventory_records.product_id
INNER JOIN locations AS lfrom ON
    lfrom.id = inventory_records.move_from    
INNER JOIN locations AS lto ON
    lto.id = inventory_records.move_to  
LIMIT 10;

相关问题