Запрос и JOIN - MySQL
Формулировка задачи:
Добрый день. Я написал 2 запроса. Скажите, пожалуйста, как правильнее? 1 или 2?
1.
2.
и 2-ой вопрос. Этот запрос разделен на 2 части (1-ое полугодие и 2-ое). Как пристыковать 2-ую часть? Так выдает ошибку
#1064 - You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'RIGHT JOIN(
SELECT qurum_id, COUNT(*) AS II FROM `qurum` AS qur2
JOIN (SELECT i' at line 5
Листинг программы
- SELECT qurum_id, COUNT(*) AS I FROM `qurum` AS qur
- JOIN (SELECT id, qurum1,input_date FROM DATA ) `aa` ON qur.qurum_id = aa.qurum1
- WHERE DATE_FORMAT(aa.input_date, '%Y') = 2017 AND DATE_FORMAT(aa.input_date, '%m') < 06
- GROUP BY `qurum_id`
- ORDER BY qur.qurum_id
Листинг программы
- SELECT qurum_id, COUNT(*) FROM `qurum` AS qur
- JOIN (SELECT id, qurum1 FROM DATA WHERE DATE_FORMAT(input_date, '%Y') = 2017 AND DATE_FORMAT(input_date, '%m') < 06) `aa` ON qur.qurum_id = aa.qurum1
- GROUP BY `qurum_id`
- ORDER BY qur.qurum_id
Листинг программы
- SELECT qurum_id, COUNT(*) AS I FROM `qurum` AS qur
- JOIN (SELECT id, qurum1,input_date FROM DATA ) `aa` ON qur.qurum_id = aa.qurum1
- WHERE DATE_FORMAT(aa.input_date, '%Y') = 2017 AND DATE_FORMAT(aa.input_date, '%m') < 06
- RIGHT JOIN(
- SELECT qurum_id, COUNT(*) AS II FROM `qurum` AS qur2
- JOIN (SELECT id, qurum1,input_date FROM DATA ) `bb` ON qur2.qurum_id = bb.qurum1
- WHERE DATE_FORMAT(bb.input_date, '%Y') = 2017 AND DATE_FORMAT(bb.input_date, '%m') BETWEEN 06 AND 12
- )
- GROUP BY `qurum_id`
- ORDER BY qur.qurum_id
Решение задачи: «Запрос и JOIN»
textual
Листинг программы
- SELECT
- qurum_id, qurum,qurum1,
- SUM(CASE WHEN DATE_FORMAT(aa.input_date, '%m') BETWEEN 01 AND 06
- THEN 1 END) AS I,
- SUM(CASE WHEN DATE_FORMAT(aa.input_date, '%m') BETWEEN 07 AND 12
- THEN 1 END) AS II
- FROM qurum AS qur
- INNER JOIN (SELECT id, qurum1,input_date FROM DATA ) AS aa
- ON qur.qurum_id = aa.qurum1
- WHERE DATE_FORMAT(aa.input_date, '%Y') = $year
- GROUP BY qurum_id
- ORDER BY qurum_id
Объяснение кода листинга программы
Ваш запрос выглядит так:
- SELECT - выбор всех столбцов, удовлетворяющих условию
- qurum_id, qurum,qurum1, - названия и значения переменных
- SUM(CASE WHEN DATE_FORMAT(aa.input_date, '%m') BETWEEN 01 AND 06 THEN 1 END) AS I - сумма с условием, что месяц в input_date находится в диапазоне от 01 до 06, иначе 0. Имя столбца I
- SUM(CASE WHEN DATE_FORMAT(aa.input_date, '%m') BETWEEN 07 AND 12 THEN 1 END) AS II - сумма с условием, что месяц в input_date находится в диапазоне от 07 до 12, иначе 0. Имя столбца II
- FROM qurum - таблица, из которой выбираются данные
- INNER JOIN (SELECT id, qurum1,input_date FROM DATA) AS aa ON qur.qurum_id = aa.qurum1 - таблица, с которой объединяются данные (DATA), и условие объединения (ON qur.qurum_id = aa.qurum1)
- WHERE DATE_FORMAT(aa.input_date, '%Y') = $year - условие, что год в input_date равен заданному значению (предполагается, что $year - это переменная или значение, которое уже определено в вашем коде или контексте)
- GROUP BY qurum_id - группировка по qurum_id
- ORDER BY qurum_id - сортировка по qurum_id Пожалуйста, обратите внимание, что некоторые элементы могут быть пропущены или некорректно записаны, так как код может быть более сложным и содержать дополнительные элементы, которые не видны в данном фрагменте.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д