Я хочу объединить несколько таблиц, используя JOIN, и 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 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'
Независимо от того, как я реструктурировал свой запрос (сначала внешний ключ, сначала первичный ключ, сначала таблица элементов, сначала таблица категорий ..., используя разные типы JOIN), я не могу заставить это работать. Также я прочитал много SO вопросов к этой топике c, но я чувствую, что порядок правильный, я не вставляю и не обновляю, и речь не идет о цитировании. Что-то принципиально сломано в моей концепции, и я очень хочу узнать, что это может быть.