Запрос в две таблица на получение суммы столбца с последующей сортировкой - MySQL
Формулировка задачи:
Добрый день!
Очень сильно прошу всех помочь в решении следующей задачи.
У меня есть две таблицы:
`tasks` (`id`, `name`, `task`, `description`, `startDate`, `endDate`, `employee`, `status`, `feedback`)
`edits` (`id`, `idTask`, `text`, `date`)
tasks.id = edits.idTask
Мне нужно узнать, сколько раз tasks.id присутствует в таблице edits. И после этого сделать сортировку по количеству присутствий.
На данный момент я написал два запроса. Но они оба не решают задачу. Первый запрос не включает в себя нулевые значения из второй таблицы.
А второй запрос не проводит сортировку. И вместо нуля в нулевых значениях таблицы выдает суммарное количество записей в таблице.
Помогите, пожалуйста, отредактировать любой из двух запрос так, чтобы он решал задачу.
Заранее благодарю!!!
SELECT tasks.id, tasks.name, tasks.task, tasks.description, tasks.startDate, tasks.employee, tasks.status, tasks.feedback, edits.idTask, COUNT(tasks.id = edits.idTask) FROM `tasks` LEFT JOIN `edits` ON tasks.id=edits.idTask WHERE tasks.id = edits.idTask GROUP BY tasks.id ORDER BY (SELECT COUNT(*) FROM `edits` WHERE tasks.id = edits.idTask)
SELECT tasks.id, tasks.name, tasks.task, tasks.description, tasks.startDate, tasks.employee, tasks.status, tasks.feedback, edits.idTask, COUNT(tasks.id = edits.idTask) FROM `tasks` LEFT JOIN `edits` ON tasks.id=edits.idTask WHERE tasks.id = edits.idTask GROUP BY tasks.id UNION SELECT DISTINCT tasks.id, tasks.name, tasks.task, tasks.description, tasks.startDate, tasks.employee, tasks.status, tasks.feedback, edits.idTask, COUNT(tasks.id != edits.idTask) FROM `tasks`, `edits` WHERE tasks.id NOT IN (SELECT idTask FROM `edits`) ORDER BY (SELECT COUNT(*) FROM `edits` WHERE tasks.id = edits.idTask)
Решение задачи: «Запрос в две таблица на получение суммы столбца с последующей сортировкой»
textual
Листинг программы
SELECT tasks.id, tasks.name, tasks.task, tasks.description, tasks.startDate, tasks.employee, tasks.status, tasks.feedback, edits.idTask, count(edits.idTask) FROM `tasks` LEFT JOIN `edits` ON tasks.id=edits.idTask GROUP BY tasks.id, tasks.name, tasks.task, tasks.description, tasks.startDate, tasks.employee, tasks.status, tasks.feedback, edits.idTask, order by count(edits.idTask)
Объяснение кода листинга программы
В данном коде выполняется запрос к двум таблицам: tasks
и edits
. Цель запроса — получить данные о задачах, которые были изменены определенное количество раз (обозначенное в переменной count
). Для этого используется оператор JOIN, чтобы объединить данные из двух таблиц по полю idTask
. Затем, с помощью оператора GROUP BY, данные группируются по полям id
, name
, task
, description
, startDate
, employee
, status
, feedback
и idTask
. Затем производится подсчет количества изменений каждой задачи с помощью функции COUNT(). Результат сортируется по убыванию количества изменений с помощью оператора ORDER BY.
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д