Хитрый запрос

Работа VB и СУБД (Access, MSSQL, MySQL, Oracle и пр.)
Правила форума
При создании новой темы не забывайте указывать используемую СУБД.
IVAN008
Обычный пользователь
Обычный пользователь
 
Сообщения: 63
Зарегистрирован: 15.02.2005 (Вт) 12:19

Хитрый запрос

Сообщение IVAN008 » 30.03.2005 (Ср) 11:53

Есть такая проблемма:
Две таблицы связанны между собой - один - ко - многим
В одной таблице описание продукции (один), в другой дефекты продукции (много). т.е. на одной единице продукции может быть отмеченно несколько видов дефектов.
Мне надо получить сводную статистику по определенному виду дефекта.
Делаю запрос и выбираю:
Код продукции (первая таблица), количество дефектов (вторая таблица) определенного вида(условие).
Если объединяю таблицы в запросе - все из первой, к совпадающим из второй, то получаю пустые строки которые потом не учавствуют в подсчете при групповых операциях и статистика выходит не та что надо.
Пока перебиваюсь тем, что экспортирую в Эксель и расставляю нули в пустых ячейках, но сил моих это делать уже нет совершенно никаких
ПОМОГИТЕ!!!!!!

Ennor
Конструктивный критик
Конструктивный критик
 
Сообщения: 2504
Зарегистрирован: 18.12.2001 (Вт) 3:58
Откуда: Калуга -> Москва

Сообщение Ennor » 30.03.2005 (Ср) 12:09

Уточни, если у детали нет дефектов искомого вида, то она вообще не должна фигурировать в этой выборке, или все-таки должна, но с нулем в количестве дефектов?

alibek
Большой Человек
Большой Человек
 
Сообщения: 14205
Зарегистрирован: 19.04.2002 (Пт) 11:40
Откуда: Russia

Сообщение alibek » 30.03.2005 (Ср) 12:29

А как считаешь?
count(*) считает строки, count(def_id) считает те записи, в которых def_id не null.
Lasciate ogni speranza, voi ch'entrate.

IVAN008
Обычный пользователь
Обычный пользователь
 
Сообщения: 63
Зарегистрирован: 15.02.2005 (Вт) 12:19

Сообщение IVAN008 » 30.03.2005 (Ср) 13:37

2Ennor
Да в выборке должны быть все детали, но если на какой-то детали не отмечен данный вид дефекта, то там должен стоять нуль.
2alibek
Я использую Access и там если я не ошибаюсь нет count(def_id), или я ошибаюсь?, тогда что дает эта функция? и можно ли ее применить в access?

Ennor
Конструктивный критик
Конструктивный критик
 
Сообщения: 2504
Зарегистрирован: 18.12.2001 (Вт) 3:58
Откуда: Калуга -> Москва

Сообщение Ennor » 30.03.2005 (Ср) 13:57

Код: Выделить всё
declare @Defect_Id int

Set @Defect_Id = 245 -- Id дефекта

select D.Name, Count(DD.*) as [Defects_Count]
from Details D
  left join Detail_Defects DD on D.Id = DD.DetailId
where DD.Id = @Defect_Id


Вернуться в Базы данных

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 1

    TopList  
cron