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
Листинг программы
  1. select *
  2. from Tab1
  3. left join Tab2 on ...
  4.  
  5. union all
  6.  
  7. select *
  8. from Tab1
  9. right join Tab2 on ...
  10. 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

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут