Запрос по 2 таблицам (1 ко многим)

serverokAsservelat
Дата: 17.02.2010 14:14:48
Добрый день всем.

Есть 2 таблицы. Отношение 1-> многим.

Первая - покупатели.
Вторая - товары.

Для каждого покупателя может сопоставляться несколько товаров (может и не быть ни одного товара).

Необходимо получить в запросе все записи со всеми полями из первой таблицы И еще поле, которое показывает количество товаров для данной записи.

То есть все поля, кроме последнего вытягиваются из первой таблицы, а последнее поле - из второй.

Таким образом надо получить таблицу, где будет вся информация о каждом покупателе с количеством его товаров.

Сами товары не интересуют, только количество для каждого покупателя.

Спасибо.
caper
Дата: 17.02.2010 14:24:09
serverokAsservelat,
как вариант:

select p.*, c.CountByPokupatel  from покупатели p
left join
(
    select id_pokupatel, count(*) as CountByPokupatel 
    from товары
    group by id_pokupatel

)  c
on p.id_pokupatel=c.id_pokupatel
tpg
Дата: 17.02.2010 14:26:45
select
   t1.*
   (select sum(количество)  from товары where покупательID = t1.покупательID) as [количество товаров для данной записи]
from покупатели t1
serverokAsservelat
Дата: 17.02.2010 14:27:59
Ага, спасибо, друзья за помощь :)
serverokAsservelat
Дата: 17.02.2010 15:24:13
Поправочка с запятой
tpg
select
   t1.*,
   (select sum(количество)  from товары where покупательID = t1.покупательID) as [количество товаров для данной записи]
from покупатели t1
Критик
Дата: 17.02.2010 16:28:57
На самом деле должны быть 3 таблицы - покупатели, товары и продажи.
iap
Дата: 17.02.2010 16:42:39
Критик
На самом деле должны быть 3 таблицы - покупатели, товары и продажи.
Так можно далеко зайти!
Например, ещё должны быть цены. А цены могут зависеть от разных факторов: для разных
покупателей - разные цены на один и тот же товар (скидки), для разного количества
товара тоже разная цена и т.д.

Для этого форума - offtop, прошу прощения, не удержался.