【问题标题】:Multiple table join MySQL multiple foreign keys多表连接 MySQL 多个外键
【发布时间】:2016-01-11 01:47:28
【问题描述】:

我在 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:“on 子句”中的未知列 ...,或其他“别名”错误。

但是,当我从一张表中只选择一列时,我就可以正常工作了。 此查询有效:

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

我认为从多个表中选择存在一些问题...有人可以帮助我吗?每一个回复都值得赞赏。谢谢

【问题讨论】:

  • order 这个词在 MySQL 中很特殊,所以最好在它周围加上记号,除非你使用的是 ORDER BY
  • 尽管 Vr46 的答案是正确的 - 我认为 - 重新考虑名称“order”作为 wogsland 提到的表名 - “order”会在任何 sql 中造成麻烦,你不会调用表“where” ,还是“选择”?
  • 我实际上并没有在我的项目中使用这个词,我只是把它从我的母语翻译成英文,这样你就可以理解了:-)

标签: mysql sql join


【解决方案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 

【讨论】:

  • 谢谢,它有效,但我得到了空白:D我必须重新考虑我的逻辑
猜你喜欢
  • 2023-03-20
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-03-13
  • 1970-01-01
  • 1970-01-01
  • 2011-06-28
  • 1970-01-01
相关资源
最近更新 更多