Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Microsoft SQL Server Новый топик    Ответить
 Помогите составить запрос.  [new]
Naile
Member

Откуда: Latvija
Сообщений: 145
Попытаюсь вкратце обисовать задачу.
Имеются 4 таблицы.
Первая:
table1_id
class_id

Вторая:
class_id
subject_id

Третья:
subject_id
person_id

Четвертая:
table1_id
person_id

В ТРЕТЬЕЙ таблице (по цепочке table1_id - class_id - subject_id - person_id) всегда будут присутствовать записи для каждого table1_id.
В ЧЕТВЕРТОЙ - не всегда.
Необходимо найти количество записей в ПЕРВОЙ таблице для конкретного person_id.
При этом, сначало надо проверить наличие данных для table1_id в ЧЕТВЕРТОЙ таблице, и только при их отсутствии брать данные для конкретного person_id из ТРЕТЬЕЙ таблицы.


Заранее спасибо.
25 окт 11, 17:45    [11497853]     Ответить | Цитировать Сообщить модератору
 Re: Помогите составить запрос.  [new]
iljy
Member

Откуда:
Сообщений: 8711
Naile,

1. джойните ваши три первые таблицы.
2. фильтруете по условию, что для table1_id нет записей в четвертой (NOT EXISTS).
3. группируете по person_id (либо фильтруете по нему, в зависимости от того, какой смысл вы вложили в слова "найти количество записей в ПЕРВОЙ таблице для конкретного person_id".
4. Используете COUNT.
25 окт 11, 20:13    [11498671]     Ответить | Цитировать Сообщить модератору
 Re: Помогите составить запрос.  [new]
Naile
Member

Откуда: Latvija
Сообщений: 145
iljy,

Можно более подробно 2-ой пункт?
Спасибо.
27 окт 11, 14:31    [11509286]     Ответить | Цитировать Сообщить модератору
 Re: Помогите составить запрос.  [new]
iljy
Member

Откуда:
Сообщений: 8711
Naile,

насколько подробнее? WHERE NOT EXEISTS (здесь проверка, что в 4й таблице нет строки, соответствующей текущей строке из первой). Можно NOT IN использовать, если поля не могут быть NULL.
27 окт 11, 14:40    [11509366]     Ответить | Цитировать Сообщить модератору
 Re: Помогите составить запрос.  [new]
Naile
Member

Откуда: Latvija
Сообщений: 145
iljy,

Спасибо!
WHERE NOT EXISTS - именно об этом я спрашивала.
28 окт 11, 13:19    [11515438]     Ответить | Цитировать Сообщить модератору
Все форумы / Microsoft SQL Server Ответить