Главная страница
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.017 c
1-62056
IgoX
2003-12-05 18:56
2003.12.19
Как прочесть весь документ Word в String


1-62147
SergeyX
2003-12-06 15:48
2003.12.19
Проблемма с IInternetProtocol


1-62093
md
2003-12-08 22:15
2003.12.19
Label


3-61900
karburator
2003-11-27 12:37
2003.12.19
выч. поле в SQL


1-62011
Piero
2003-12-06 18:14
2003.12.19
Масштабирование TImage