试图连接mysql中的多个表-获取错误1054,未知列
我想使用连接连接多个表,而mysql/mariadb拒绝查找一列。当然,这个专栏是存在的,我不知道原因是什么 表格布局试图连接mysql中的多个表-获取错误1054,未知列,mysql,sql,join,mariadb,Mysql,Sql,Join,Mariadb,我想使用连接连接多个表,而mysql/mariadb拒绝查找一列。当然,这个专栏是存在的,我不知道原因是什么 表格布局 CREATE TABLE `shops` ( `id` int(11) NOT NULL, `name` varchar(32) NOT NULL, ); CREATE TABLE `shops2categories` ( `shopid` int(11) NOT NULL, `categoryid` int(11) NOT NULL, ); CREATE
CREATE TABLE `shops` (
`id` int(11) NOT NULL,
`name` varchar(32) NOT NULL,
);
CREATE TABLE `shops2categories` (
`shopid` int(11) NOT NULL,
`categoryid` int(11) NOT NULL,
);
CREATE TABLE `categories` (
`id` int(11) NOT NULL,
`name` varchar(64) NOT NULL,
);
CREATE TABLE `categories2items` (
`itemid` int(11) NOT NULL,
`categoryid` int(11) NOT NULL
);
CREATE TABLE `items` (
`id` int(11) NOT NULL,
`name` varchar(32) NOT NULL,
);
查询:
为了避免与别名混淆,我现在使用原始表名运行查询
SELECT
shops.name,
categories.name,
items.name
FROM shops
LEFT JOIN shops2categories ON shops2categories.shopid = shops.id
LEFT JOIN categories2items ON categories2items.categoryid = categories.id
LEFT JOIN categories ON categories.id = shops2categories.categoryid
LEFT JOIN items ON items.id = categories2items.itemid
错误消息:
#1054 - Unknown column 'categories.id' in 'on clause'
无论我如何重新构造我的查询(外键优先、主键优先、项表优先、类别表优先……,使用不同的联接类型),我似乎都无法实现这一点。我也读了很多关于这个主题的问题,但我觉得顺序是正确的,我没有插入或更新,也没有引用。在我的概念中,有些东西根本上被打破了,我非常渴望了解这可能是什么。看看你的
from
子句。在定义c
之前,请先引用c.id
在FROM
子句中定义表之前,无法引用该表
你似乎想要:
FROM shops s LEFT JOIN
shops2categories s2c
ON s2c.shopid = s.id LEFT JOIN
categories c
ON c.id = s2c.categoryid LEFT JOIN
categories2items c2i
ON c2i.categoryid = c.id LEFT JOIN
items i
ON i.id = c2i.itemid
这回答了你的问题吗<代码>c.id在别名
c
之前被引用defined@P.Salmon,谢谢,我来看看!谢谢,戈登!它不是开箱即用的,我必须使用没有任何别名的表名,但是——它可以工作。谢谢