Помогите, пожалуйста, с задачей (SQL)
От: efrm84  
Дата: 29.12.09 19:43
Оценка:
Есть 2 таблицы: "Заказы" и "Покупатели". Составить sql запрос, который выдает число заказов для каждого покупателя, одна строка на покупателя.
Re: Помогите, пожалуйста, с задачей (SQL)
От: DenisCh Россия  
Дата: 29.12.09 20:00
Оценка:
Здравствуйте, efrm84, Вы писали:

E>Есть 2 таблицы: "Заказы" и "Покупатели". Составить sql запрос, который выдает число заказов для каждого покупателя, одна строка на покупателя.


Select Покупатель, (selecy count(*) from Заказы Where Покупатель = t1.Покупатель)
from Покупатели as t1
... << RSDN@Home 1.2.0 alpha rev. 741>>
Re: Помогите, пожалуйста, с задачей (SQL)
От: Other Sam Россия  
Дата: 29.12.09 20:12
Оценка:
> Есть 2 таблицы: "Заказы" и "Покупатели". Составить sql запрос, который
> выдает число заказов для каждого покупателя, одна строка на покупателя.

Ну это совсем просто
-- Простой запрос, но придется перечислять все столбцы
-- Однако нет проблем с производительностью, и любой сервер
-- обслужит этот запрос наилучшим образом.
SELECT C.CustomerID, C.FirstName, count(O.*) AS OrderCount
FROM Customers C
LEFT JOIN Orders O
     ON O.CustomerID = C.CustomerID
GROUP BY C.CustomerID, C.FirstName

-- Использование подзапросов.
-- Некоторые сервера несмогут правильно
-- составить план запроса, и выборка будет
-- производиться долго. Еще не все сервера
-- поддерживают вложенные запросы таким образом
SELECT C.*,
     (SELECT count(*) FROM Orders
     WHERE Orders.CustomerID = C.CustomerID
     ) AS OrderCount
FROM Customers C

-- Группировка и объединение
-- С таким запросом тоже не возникает проблем
-- но вместо нулей будет NULL. Однако это легко исправить
-- если выбирать COALESCE(X.OrderCount, 0) AS OrderCount
SELECT C.*, X.OrderCount
FROM Customers C
LEFT JOIN (
         SELECT CustomerID, count(*) AS OrderCount FROM Orders
         GROUP BY CustomerID
     ) X ON X.CustomerID = C.CustomerID
Posted via RSDN NNTP Server 2.1 beta
Re: Помогите, пожалуйста, с задачей (SQL)
От: avpavlov  
Дата: 30.12.09 15:33
Оценка: :))
E>Есть 2 таблицы: "Заказы" и "Покупатели". Составить sql запрос, который выдает число заказов для каждого покупателя, одна строка на покупателя.

Вот и сессия началась ...
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.