#sql
Вопрос:
У меня есть 2 бита написанного SQL-кода, которые мне нужно объединить. Однако я не могу прийти к правильному решению.
Запрос № 1:
SELECT name FROM payment_method;
Запрос № 2:
SELECT COUNT(*) FROM orders GROUP BY payment_method_id;
В окончательном коде должно быть указано общее количество для каждого платежа (сколько раз был использован каждый платеж).
Мой код показывает таблицу, в которой перечислены все имена, но вместо подсчета платежей с одинаковым идентификатором он учитывает все методы оплаты, которые показаны во второй таблице.
В чем именно проблема?
Мой окончательный код:
SELECT name, COUNT(*) AS orders FROM payment_method JOIN orders ON payment_method_id GROUP BY name;
payment_method
таблица содержит идентификатор и имя
orders
таблица содержит идентификатор, payment_method_id и payment_completed_date
Ответ №1:
Когда вы соединяете таблицы, вам необходимо определить отношение, как таблицы должны быть соединены. кроме того, рекомендуется использовать псевдонимы таблиц в случае, если они имеют общие имена некоторых столбцов.
SELECT p.name, COUNT(o.id) AS orders_count FROM payment_method p JOIN orders o ON o.payment_method_id = p.id GROUP BY o.payment_method_id;
Комментарии:
1. Я бы СГРУППИРОВАЛСЯ ПО p.name вместо этого.
2. @jarlh есть ли какая-то польза?
3. Допустимая группа по. Будет переносим в более строгие (т. е. правильные) базы данных.