Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 2003.12.19;
Скачать: [xml.tar.bz2];

Вниз

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

 
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;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.46 MB
Время: 0.008 c
14-62223
3dcat
2003-11-27 21:17
2003.12.19
Нужны разработчики


14-62206
TriX
2003-11-26 18:13
2003.12.19
HELP ME !!!!!!!!!!!!!


14-62229
GPRS
2003-11-25 17:58
2003.12.19
Тем кто пользуется GPRS


1-62125
ДмитрийБ
2003-12-08 08:35
2003.12.19
Install Shield и BDE


6-62184
Denis_Ac
2003-10-23 07:40
2003.12.19
Что такое?





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский