【发布时间】: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” ,还是“选择”?
-
我实际上并没有在我的项目中使用这个词,我只是把它从我的母语翻译成英文,这样你就可以理解了:-)