Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.12.19;
Скачать: CL | DM;

Вниз

Запрос на   Найти похожие ветки 

 
McSimm2   (2003-11-26 17:16) [0]

Как можно проще написать следующий запрос?

select *
from table1
where ((table1.field1, table1.field2, table1.field3) in
(select field1, field2, field3 from table2 where field4 = "q") or
((table1.field1, table1.field2, table1.field3) not in
(select field1, field2, field3 from table2)

мне нужно table1 связать с table2 при равенстве в table2 поля
field4 = "q" или же если такого равенства нет вернуть запись из
таблицы table1 если её нет в table2 по связке
field1, field2, field3

В таблице table1 и table2 построены индексы по полям
field1, field2, field3


 
Johnmen ©   (2003-11-26 17:25) [1]

select *
from table1
left join table2 on
(table1.field2=table2.field2) and
(table1.field1=table2.field1) and
(table1.field3=table2.field3) and
(table2.field4="q")

для Оракла>=9.0


 
McSimm2   (2003-11-26 17:28) [2]

Oracle у меня 8.

и мне нужно из таблицы table1 вернуть запись если
при связке этой таблицы с table2 - в table2 окажется равенство 4
поля или же
если грубо говоря первая таблица "не привяжется" ко второй


 
asp ©   (2003-11-26 17:31) [3]

Способов можно придумать много :)
Для упрощения я взял только связку по FIELD1. Сути это не меняет.
SELECT T1.*
FROM TABLE1 T1
LEFT OUTER JOIN TABLE2 T2 ON (T1.FIELD1 = T2.FIELD1)
WHERE T2.FIELD2 = "q"
OR NOT(EXISTS(SELECT T3.FIELD1 FROM TABLE3 T3 WHERE T3.FIELD1 = T1.FIELD1))


 
asp ©   (2003-11-26 17:34) [4]

Пардон, не внял задачу :\


 
Johnmen ©   (2003-11-26 17:39) [5]

>McSimm2

Попробуй так, хотя сомнительно...
select *
from table1,table2
where
(table1.field2=table2.field2(+)) and
(table1.field1=table2.field1(+)) and
(table1.field3=table2.field3(+)) and
(table2.field4="q")


 
Sandman25 ©   (2003-11-26 17:51) [6]

select *
from table1
where ((table1.field1, table1.field2, table1.field3) not in
(select field1, field2, field3 from table2 where field4 <> "q")


 
Petr V. Abramov ©   (2003-11-26 19:58) [7]

мутно :)

можно еще раз и по порядку:
по каким полям связываются t1 и t2?
какое условие стоит на t2?
если (хорошо ли я понял?) в t2 нет ни одной записи, удовлетворяющей условию, тогда что?



Страницы: 1 вся ветка

Текущий архив: 2003.12.19;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.018 c
1-62098
Andrey V.
2003-12-08 19:28
2003.12.19
Параметры в ехе.


14-62279
SPeller
2003-11-20 11:56
2003.12.19
Ура!!! :-)))


1-62010
James1981Bond
2003-12-07 00:19
2003.12.19
Ошибка при работе со свойствами..........


7-62308
Darkwing
2003-10-13 22:07
2003.12.19
Как вывести в LPT данные (WinXP) ?


1-62043
anod
2003-12-04 22:30
2003.12.19
Части имени файла по шаблону