OUTER JOIN - MySQL
Формулировка задачи:
SQLSTATE[42000]: Syntax error or access violation: 1064 You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'FULL OUTER JOIN construct_date ON date_day=construct_date.date WHERE salout_th.d' at line 1
The SQL being executed was: SELECT distributors.name AS distributors__name, DATE_FORMAT(FROM_UNIXTIME(salout_th.date), "%Y/%m/%d") AS date_day, DATE_FORMAT(FROM_UNIXTIME(salout_th.date), "%Y/%m") AS date_month,SUM(amount) AS salout_p FROM salout_th LEFT JOIN salout_ld ON salout_th.unique_code=salout_ld.unique_code LEFT JOIN distributors ON distributors.id=salout_th.distr_id FULL OUTER JOIN construct_date ON date_day=construct_date.date WHERE salout_th.document_type IN (1,2) AND date BETWEEN 1454364000 AND 1478815200 GROUP BY month(date_month),day(date_day) ORDER BY month(date_month),day(date_day), UNIX_TIMESTAMP(date_month)
не могу понять в чем ошибка, если делаю лефт джойн то работает но не так как надо, мне надо аутер но никогда с ним не работал но по идеи все правильно вот только не совсем), может кто подсказать в чём что тут не так)?
Решение задачи: «OUTER JOIN»
textual
Листинг программы
select * from Tab1 left join Tab2 on ... union all select * from Tab1 right join Tab2 on ... where tab1.id is null
Объяснение кода листинга программы
В представленном коде выполняется запрос с использованием операции OUTER JOIN с последующим использованием операции UNION ALL.
- SELECT * FROM Tab1 LEFT JOIN Tab2 ON ... Здесь происходит левое соединение (OUTER JOIN) таблиц Tab1 и Tab2. В результате получаем все строки из Tab1 и только те строки из Tab2, которые имеют соответствующие значения в Tab1.
- UNION ALL Операция UNION ALL объединяет результаты двух предыдущих запросов в один результирующий набор.
- SELECT * FROM Tab1 RIGHT JOIN Tab2 ON ... Здесь происходит правое соединение (OUTER JOIN) таблиц Tab1 и Tab2. В результате получаем все строки из Tab1 и только те строки из Tab2, которые имеют соответствующие значения в Tab1.
- WHERE tab1.id IS NULL В данном случае, из результирующего набора запроса удаляются строки, у которых значение столбца id в таблице Tab1 равно NULL.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д