C++ Builder
| Главная | Уроки | Статьи | FAQ | Форум | Downloads | Литература | Ссылки | RXLib | Диски |

 
Правое и левое вешнее объединение одновременно
AVC
Отправлено: 27.05.2004, 14:25


Ветеран

Группа: Модератор
Сообщений: 1583



Помогите с идеей.
Нужно сравнить две выборки, информация в которых частично перекрывается.
Пример
содержимое Sel1 {1,2,3,4}
содержимое Sel2 {3,4,5,6}
нужен результат (по строкам)
1 Null
2 Null
3 3
4 4
Null 5
Null 6

Заранее благодарен.
AVC
Отправлено: 27.05.2004, 14:46


Ветеран

Группа: Модератор
Сообщений: 1583



Извиняюсь за беспокойство. Вопрос снят.
Gedeon
Отправлено: 27.05.2004, 15:22


Ветеран

Группа: Модератор
Сообщений: 1742



Покажи решение, со своим хочу сравнить.
AVC
Отправлено: 27.05.2004, 15:30


Ветеран

Группа: Модератор
Сообщений: 1583



Реальный запрос (Oracle)
CODE

Select -- строки из первой, которых нет во второй
 h.*
,b.*
From
 HHC.Town h
,(Select * From BByt.BRay Where 1 = 2) b -- пустая строка для Union
Where 1 = 1
and h.TownID = b.NOM (+)
and h.TownID not in (Select NOM From BByt.BRay)
--
Union all
--
Select
 h.*
,b.*
From
 HHC.Town h
,BByt.BRay b
Where 1 = 1
and b.Nom = h.TownID (+) -- все BRay и задвоенные из Town

Gedeon
Отправлено: 27.05.2004, 15:42


Ветеран

Группа: Модератор
Сообщений: 1742



Oracle
SQL
SELECT SEL1.NUM,
SEL2.NUM
FROM SEL1, SEL2
WHERE SEL1.NUM = SEL2.NUM(+)
UNION
SELECT SEL1.NUM,
SEL2.NUM
FROM SEL1, SEL2
WHERE SEL1.NUM(+) = SEL2.NUM
AVC
Отправлено: 27.05.2004, 16:27


Ветеран

Группа: Модератор
Сообщений: 1583



Спасибо, да.

Вернуться в Работа с базами данных в C++Builder