D
D
Div-Man2018-10-19 10:39:54
MySQL
Div-Man, 2018-10-19 10:39:54

Why isn't another LEFT JOIN added?

I don't understand why it doesn't work when I add another table?
For some reason, it swears at this join

LEFT JOIN category_letter_master ON category_letter_master.masters_id  = master_user.master_id

Статический анализ:
 
Найдено 2 ошибок при анализе.
 
Этот тип предложения ранее анализировался. (near "LEFT JOIN" at position 233)
Неизвестный оператор. (near "LEFT JOIN" at position 233)
SQL запрос:
 
SELECT master_user.master_id, masters.specialization, COUNT(*) FROM master_user LEFT JOIN masters ON master_user.master_id = masters.id WHERE city_id = 4019 LEFT JOIN category_letter_master ON category_letter_master.masters_id = master_user.master_id GROUP BY master_user.master_id
 
Ответ MySQL:
 
#1064 - У вас ошибка в запросе. Изучите документацию по используемой версии MySQL на предмет корректного синтаксиса около 'LEFT JOIN category_letter_master ON category_letter_master.masters_id  = master_' на строке 5

This is how it works
SELECT master_user.master_id,
masters.specialization,
COUNT(*) FROM master_user
LEFT JOIN masters ON master_user.master_id = masters.id
        WHERE city_id = 4019
GROUP BY master_user.master_id

And if you add one more join, it doesn't work, why?
CREATE TABLE `master_user` (
  `id` int(10) UNSIGNED NOT NULL,
  `user_id` int(11) NOT NULL,
  `master_id` int(11) NOT NULL,
  `city_id` int(11) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
 
--
-- Дамп данных таблицы `master_user`
--
 
INSERT INTO `master_user` (`id`, `user_id`, `master_id`, `city_id`) VALUES
(15, 16, 3, 4019),
(18, 16, 5, 4019),
(19, 16, 4, 4019),
(20, 16, 2, 4019),
(21, 17, 4, 4019),
(22, 17, 2, 4400);
 
--
-- Индексы сохранённых таблиц
--
 
--
-- Индексы таблицы `master_user`
--
ALTER TABLE `master_user`
  ADD PRIMARY KEY (`id`);
 
--
-- AUTO_INCREMENT для сохранённых таблиц
--
 
--
-- AUTO_INCREMENT для таблицы `master_user`
--
ALTER TABLE `master_user`
  MODIFY `id` int(10) UNSIGNED NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=23;
COMMIT;

--
-- Структура таблицы `category_letter_master`
--
 
CREATE TABLE `category_letter_master` (
  `id` int(10) UNSIGNED NOT NULL,
  `category_letter_id` int(11) NOT NULL,
  `master_id` int(11) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;
 
--
-- Дамп данных таблицы `category_letter_master`
--
 
INSERT INTO `category_letter_master` (`id`, `category_letter_id`, `master_id`) VALUES
(1, 1, 1),
(2, 4, 2),
(3, 5, 3),
(4, 17, 4),
(5, 17, 5),
(7, 12, 7);
 
--
-- Индексы сохранённых таблиц
--
 
--
-- Индексы таблицы `category_letter_master`
--
ALTER TABLE `category_letter_master`
  ADD PRIMARY KEY (`id`);
 
--
-- AUTO_INCREMENT для сохранённых таблиц
--
 
--
-- AUTO_INCREMENT для таблицы `category_letter_master`
--
ALTER TABLE `category_letter_master`
  MODIFY `id` int(10) UNSIGNED NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=8;
COMMIT;

--
-- Структура таблицы `masters`
--

CREATE TABLE `masters` (
  `id` int(10) UNSIGNED NOT NULL,
  `specialization` varchar(255) COLLATE utf8mb4_unicode_ci NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci;

--
-- Дамп данных таблицы `masters`
--

INSERT INTO `masters` (`id`, `specialization`) VALUES
(1, 'Алмазная резка'),
(2, 'Гипсокартон'),
(3, 'Двери'),
(4, 'Пол'),
(5, 'Потолок'),
(7, 'Кладка');

--
-- Индексы сохранённых таблиц
--

--
-- Индексы таблицы `masters`
--
ALTER TABLE `masters`
  ADD PRIMARY KEY (`id`);

--
-- AUTO_INCREMENT для сохранённых таблиц
--

--
-- AUTO_INCREMENT для таблицы `masters`
--
ALTER TABLE `masters`
  MODIFY `id` int(10) UNSIGNED NOT NULL AUTO_INCREMENT, AUTO_INCREMENT=8;
COMMIT;

Answer the question

In order to leave comments, you need to log in

2 answer(s)
R
Rsa97, 2018-10-19
@Div-Man

... WHERE city_id = 4019 LEFT JOIN ...
There cannot be JOINs after WHERE.

E
Eugene, 2018-10-25
@EpOsS

JOINs follow each other
The structure of the SQL query is:
SELECT * FROM table
LEFT JOIN table1 ON...
LEFT JOIN table2 ON ....
INNER JOIN table3 ON ...
WHERE ....

Didn't find what you were looking for?

Ask your question

Ask a Question

731 491 924 answers to any question