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.

  1. SELECT * FROM Tab1 LEFT JOIN Tab2 ON ... Здесь происходит левое соединение (OUTER JOIN) таблиц Tab1 и Tab2. В результате получаем все строки из Tab1 и только те строки из Tab2, которые имеют соответствующие значения в Tab1.
  2. UNION ALL Операция UNION ALL объединяет результаты двух предыдущих запросов в один результирующий набор.
  3. SELECT * FROM Tab1 RIGHT JOIN Tab2 ON ... Здесь происходит правое соединение (OUTER JOIN) таблиц Tab1 и Tab2. В результате получаем все строки из Tab1 и только те строки из Tab2, которые имеют соответствующие значения в Tab1.
  4. WHERE tab1.id IS NULL В данном случае, из результирующего набора запроса удаляются строки, у которых значение столбца id в таблице Tab1 равно NULL.

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

10   голосов , оценка 3.4 из 5