多表连接MySQL多个外键

时间:2016-01-11 01:47:28

标签: mysql sql join

我在MySQL中加入时遇到了困难。我有4张桌子,都连在一起。

**Order**: order_id, shop_id(fk), date, day, order_price, PK_order
**Scan** : scan_id(PK), item_id, order_id(FK), stack, stack_price, price, note
**Item** : item_id(PK), item_name
**Shop** : shop_id(PK), shop_name

我想构建一个输出如下内容的查询:

date|day|shop_name|item_name|stack|stack_price|price|note

我的查询如下:

Select
      order.date, order.day, shop.shop_name, item.item_name, scan.stack, scan.stack_price,
      scan.price, scan.note
From
      order, scan, shop, item
Join
      shop on order.shop_id = shop.shop_id
Join
      item on scan.item_id = item.item_id

我收到错误1054:未知列...在条款'或其他'别名'错误。

然而,当我从一个表中只选择一列时,我就可以了。 此查询有效:

 select item.item_name from scan inner join item on scan.item_id = item.item_id

我认为从多个表中选择有一些问题......任何人都可以帮助我吗?每个回复都表示赞赏。感谢

1 个答案:

答案 0 :(得分:1)

您已将以逗号分隔的连接内部连接组合在一起,您不必多次使用同一个表。

如果没有错,这就是你要找的东西

SELECT `order`.`DATE`, 
       `order`.`day`, 
       shop.shop_name, 
       item.item_name, 
       scan.stack, 
       scan.stack_price, 
       scan.price, 
       scan.note 
FROM   `order` 
       join scan 
         ON `order`.order_id = scan.order_id 
       join shop 
         ON `order`.shop_id = shop.shop_id 
       join item 
         ON scan.item_id = item.item_id