![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Запрос на [Oracle] [D7]
McSimm2 © (2003-11-26 17:16:00)
Как можно проще написать следующий запрос?
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
Petr V. Abramov (2003-11-26 19:58:00) [1]
мутно :)
можно еще раз и по порядку:
по каким полям связываются t1 и t2?
какое условие стоит на t2?
если (хорошо ли я понял?) в t2 нет ни одной записи, удовлетворяющей условию, тогда что?
Sandman25 (2003-11-26 17:51:00) [2]
select *
from table1
where ((table1.field1, table1.field2, table1.field3) not in
(select field1, field2, field3 from table2 where field4 <> "q")
Johnmen (2003-11-26 17:39:00) [3]
>McSimm2
Попробуй так, хотя сомнительно...
select *
from table1,table2
where
(table1.field2=table2.field2(+)) and
(table1.field1=table2.field1(+)) and
(table1.field3=table2.field3(+)) and
(table2.field4="q")
asp (2003-11-26 17:34:00) [4]
Пардон, не внял задачу :\
asp (2003-11-26 17:31:00) [5]
Способов можно придумать много :)
Для упрощения я взял только связку по 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))
McSimm2 (2003-11-26 17:28:00) [6]
Oracle у меня 8.
и мне нужно из таблицы table1 вернуть запись если
при связке этой таблицы с table2 - в table2 окажется равенство 4
поля или же
если грубо говоря первая таблица "не привяжется" ко второй
Johnmen (2003-11-26 17:25:00) [7]
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