#sql #syntax #client
#sql #синтаксис #клиент
Вопрос:
**
SELECT clientName, orderID FROM
Orders INNER JOIN clients ON orders.clientID = clients.clientID;
**
Я могу показать каждого клиента и каждый из их заказов. Помогите мне исправить мой синтаксис SQL, чтобы я показывал количество заказов для каждого клиента?
Я также хочу, чтобы мои результаты были упорядочены в алфавитном порядке по имени клиента,
пожалуйста, напишите для меня новый синтаксис SQL!
Комментарии:
1. Подсказка:
GROUP BY
.COUNT()
.
Ответ №1:
ВЫБЕРИТЕ имяклиЕнта, COUNT(*) ИЗ Orders ВНУТРЕННЕЕ ОБЪЕДИНЕНИЕ клиентов В orders.ClientID = clients.ClientID ГРУППА ПО имени КЛИЕНТА ПОРЯДОК ПО ИМЕНИ КЛИЕНТА
Ответ №2:
Вы можете использовать агрегацию:
select c.clientName, count(*) no_orders
from clients c
inner join orders o on o.clientID = c.clientID
group by c.clientID, c.clientName
Примечания:
- псевдонимы таблиц облегчают чтение и запись запроса
- добавление идентификатора клиента в
group by
предложение учитывает возможность того, что разные клиенты могут иметь одно и то же имя - в общем, вы хотите избежать идентификаторов регистра верблюда (
ClientName
) и вместо этого использовать регистр змеи (client_name
): с точки зрения базы данных идентификаторы не чувствительны к регистру (если не указаны в кавычках)
Комментарии:
1. Для чего нужны o и c?
2. И почему это no_orders, даже если я хочу сделать это по порядку?
3. @userman: это псевдонимы таблиц, как объяснено в моем ответе. И
no_orders
является псевдонимом столбца, который будет обозначать количество заказов .