![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Запрос [Paradox]
glow © (2003-09-16 12:51:00)
Две таблицы связаны один-ко-многим (по регистрационному номеру), условия по двум полям из одной таблицы, и по одному из подчиненной (Prikaz.db P)P.Type - это числовое поле которое содержит код приказа. Так вот из подчиненной таблицы необходимо вытащить только те записи, которые не имеют приказа с кодом, например, 2.(Например, одной записи в главной табл. с RNOM=1, соответствует 4 записи с RNOM=1 в подчиненной, из которых ни одна не должна иметь TYPE=2). Уважаемые Мастера, помогите реализовать это условие.
SELECT A.KAT, A.FOB, P.Type FROM ASPI.db A LEFT JOIN Prikaz.db P ON A.RNOM=P.RNOM WHERE A.KAT=1 AND A.FOB=1 AND (P.Type<>2)
проблема в выделенном куске (знаю, что <> 2 не верно)
ЮЮ (2003-09-17 07:47:00) [21]
>Да он выполняется, но в него попадают записи не только А.KAT=1
Это не может быть. Или твой вариант запроса отличается от предложенного
glow (2003-09-17 05:54:00) [22]
> Не может быть ! Запрос верен.
Да он выполняется, но в него попадают записи не только А.KAT=1
> A.FOB = 1
Означает обучающиеся очно
Sandman25 (2003-09-16 16:49:00) [23]
Попробуйте убрать условие A.FOB = 1
Я же не знал (и до сих пор не знаю :-)) его смысл, поэтому просто тупо его скопировал. Возможно, его нужно засунуть во вложенный (внутренний) select.
Johnmen (2003-09-16 15:01:00) [24]
>glow © (16.09.03 14:34)
>...запрос выполняется неверно
Не может быть ! Запрос верен.
glow (2003-09-16 14:34:00) [25]
> SELECT A.KAT, A.FOB, B.Type
> FROM ASPI.db A,
> Prikaz.db B
> WHERE A.KAT = 1
> AND A.FOB = 1
> AND B.RNOM = A.RNOM
> AND NOT EXISTS
> (SELECT *
> FROM Prikaz.db C
> WHERE C.RNOM = A.RNOM
> AND C.Type = 2
> )
Спасибо за ответ, но все же этот запрос выполняется неверно
Вобщем нужно выбрать всех, обучающихся очно, с категорией 1, у которых в таблице приказов нет приказа на отчисление (TYPE<>2)
Sandman25 (2003-09-16 13:29:00) [26]
SELECT A.KAT, A.FOB, B.Type
FROM ASPI.db A,
Prikaz.db B
WHERE A.KAT = 1
AND A.FOB = 1
AND B.RNOM = A.RNOM
AND NOT EXISTS
(SELECT *
FROM Prikaz.db C
WHERE C.RNOM = A.RNOM
AND C.Type = 2
)
glow (2003-09-16 13:27:00) [27]
> Например, одной записи в главной табл. с RNOM=1, соответствует
> 4 записи с RNOM=1 в подчиненной,
среди этих 4-х поле: 1-ая запись TYPE=3
2-ая запись TYPE=2
3-ая запись TYPE=1
4-ая запись TYPE=6
т.к. из них одна имеет TYPE=2, то и из главной таблицы брать запись с RNOM=1 не нужно, если бы ни одна из подчиненных записей не имела бы TYPE=2, то запись с RNOM можно было бы включить в выборку.
Надеюсь что понятно
Johnmen (2003-09-16 13:06:00) [28]
Неясно, в чем проблема...
М.б. надо ... ON (A.RNOM=P.RNOM) AND (P.Type<>2) ...
И расставь скобки в WHERE.