Вниз
Скачать: 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 вся ветка

Скачать: CL | DM;



Память: 0.46 MB
Время: 0.012 c
1-62089
Aweton
2003-12-09 03:35
2003.12.19
Как отобразить файлы в ComboBox из опредилённой папки ?


1-62138
Василиск
2003-12-09 13:28
2003.12.19
Tnt Components KeyPress


1-62076
Ил_204
2003-12-09 09:51
2003.12.19
Версия проекта


14-62248
Fredericco
2003-11-15 21:54
2003.12.19
Отчет о разведке NYMMP 2003.


14-62278
Mox Fulder
2003-11-26 22:12
2003.12.19
NT AUTHORITY SYSTEM




   Наверх