Запрос в две таблица на получение суммы столбца с последующей сортировкой - MySQL

Узнай цену своей работы

Формулировка задачи:

Добрый день! Очень сильно прошу всех помочь в решении следующей задачи. У меня есть две таблицы: `tasks` (`id`, `name`, `task`, `description`, `startDate`, `endDate`, `employee`, `status`, `feedback`) `edits` (`id`, `idTask`, `text`, `date`) tasks.id = edits.idTask Мне нужно узнать, сколько раз tasks.id присутствует в таблице edits. И после этого сделать сортировку по количеству присутствий. На данный момент я написал два запроса. Но они оба не решают задачу. Первый запрос не включает в себя нулевые значения из второй таблицы.
Листинг программы
  1. SELECT tasks.id, tasks.name, tasks.task, tasks.description, tasks.startDate, tasks.employee, tasks.status, tasks.feedback, edits.idTask,
  2. COUNT(tasks.id = edits.idTask) FROM `tasks`
  3. LEFT JOIN `edits` ON tasks.id=edits.idTask
  4. WHERE tasks.id = edits.idTask
  5. GROUP BY tasks.id
  6. ORDER BY (SELECT COUNT(*) FROM `edits` WHERE tasks.id = edits.idTask)
А второй запрос не проводит сортировку. И вместо нуля в нулевых значениях таблицы выдает суммарное количество записей в таблице.
Листинг программы
  1. SELECT tasks.id, tasks.name, tasks.task, tasks.description, tasks.startDate, tasks.employee, tasks.status, tasks.feedback, edits.idTask, COUNT(tasks.id = edits.idTask)
  2. FROM `tasks` LEFT JOIN `edits` ON tasks.id=edits.idTask
  3. WHERE tasks.id = edits.idTask
  4. GROUP BY tasks.id
  5. UNION
  6. 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)
  7. FROM `tasks`, `edits`
  8. WHERE tasks.id NOT IN (SELECT idTask FROM `edits`)
  9. ORDER BY (SELECT COUNT(*) FROM `edits` WHERE tasks.id = edits.idTask)
Помогите, пожалуйста, отредактировать любой из двух запрос так, чтобы он решал задачу. Заранее благодарю!!!

Решение задачи: «Запрос в две таблица на получение суммы столбца с последующей сортировкой»

textual
Листинг программы
  1. SELECT tasks.id, tasks.name, tasks.task, tasks.description, tasks.startDate, tasks.employee, tasks.status, tasks.feedback, edits.idTask, count(edits.idTask)  FROM `tasks`
  2. LEFT JOIN `edits` ON tasks.id=edits.idTask
  3. 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

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

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

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