Запрос в две таблица на получение суммы столбца с последующей сортировкой - 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.

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


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

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

10   голосов , оценка 4 из 5
Похожие ответы