У меня есть 2 таблицы, Task
и Transaction
, которые выглядят следующим образом:Multiple Внутренние соединения - MySQL
задач
Transaction
Я хотел бы создайте запрос, который возвращает информацию из обеих таблиц.
Колонны: name, priority, waiting, error, done, total, status
где:
- имя = Task.name
- приоритет = Task.priority
- ожидания = кол (transaction.id) где task.id = транзакции. task and transaction.status = 1
- error = count (transaction.id) WHERE task.id = transaction.task и transaction.status = 2
- сделано = счетчик (transaction.id) где task.id = transaction.task и transaction.status = 3
- = общее количество (transaction.id) где task.id = transaction.task
- состояние = задача. статус
Я попытался с INNER
JOIN, но я получаю неправильный результат:
SELECT tk.name, tk.priority, waiting.waiting, error.error, done.done, total.total
FROM task AS tk, transaction AS tran
INNER JOIN (
SELECT count(id) AS waiting
FROM transaction
WHERE status = 1
) AS waiting
INNER JOIN (
SELECT count(id) AS error
FROM transaction
WHERE status = 3
) AS error
INNER JOIN (
SELECT count(id) AS done
FROM transaction
WHERE status = 4
) AS done
INNER JOIN (
SELECT count(id) AS total
FROM transaction
) AS total;
Не могли бы вы помочь мне создать этот запрос? Я получаю столбцы, ожидающие, ошибки, сделанные, итоговые суммы всех транзакций. Вместо этого он должен получить номер транзакции WHERE task.id = transaction.task и transaction.status = 1,2,3.
Что неправильный результат, который вы получите? – skrrgwasme
Столбцы ожидания, ошибки, сделанные, итоговое количество счетчиков всех транзакций. Для каждой задачи он должен получить количество транзакций WHERE task.id = transaction.task и transaction.status = 1,2,3. – Romulus