Zamiast używać słów kluczowych, takich jak FULL OUTER JOIN lub FULL JOIN, w jaki sposób mogę wykonać pełne sprzężenie zewnętrzne za pomocą klauzuli "where" za pomocą operatora "+" ?!Jak wykonać FULL OUTER JOIN w ORACLE za pomocą operatora "+"?
13
A
Odpowiedz
19
Nie możesz (przynajmniej bezpośrednio). Oracle obsługuje tylko pełne sprzężenie zewnętrzne za pomocą składni SQL: 1999.
Można udawać przez unioning dwie zewnętrzne przyłącza:
select a.field1, b.field2
from table_a a, table_b b
where a.id = b.id(+)
union all
select a.field1, b.field2
from table_a a, table b b
where a.id(+) = b.id
and a.id is null
To dużo bardziej czytelne przy użyciu SQL: 1999 składnia:
select a.field1, b.field2
from table_a a full outer join table_b b
on a.id = b.id
+0
dzięki Allan ... – Munna89
3
Oto przykład można uruchomić w Oracle aby zobaczyć wyniki również dla ciebie.
with
a as
(select 'A' tbl, level id from dual connect by level < 1000),
b as
(select 'B' tbl, level + 500 id from dual connect by level < 1000)
select a.tbl, a.id, b.tbl, b.id from a, b where a.id = b.id(+)
union all
select a.tbl, a.id, b.tbl, b.id from a, b where a.id(+) = b.id and a.id is null
jest taka sama jak:
with
a as
(select 'A' tbl, level id from dual connect by level < 1000),
b as
(select 'B' tbl, level + 500 id from dual connect by level < 1000)
select a.tbl, a.id, b.tbl, b.id from a full outer join b on a.id = b.id
Powiązane problemy
- 1. SQL: FULL OUTER JOIN na pustych kolumnach
- 2. Multiple FULL OUTER JOIN na wielu stołach
- 3. Jak wykonać "left outer join" w sqlalchemy
- 4. MySQL OUTER JOIN Błąd składniowy
- 5. EF - WithOptional - Left Outer Join?
- 6. LEFT OUTER JOIN z klauzul WHERE
- 7. LEFT OUTER JOIN vs SUBSELECT w MySQL
- 8. SQL - LEFT OUTER JOIN i WHERE klauzula
- 9. Składnia SQL dla LEFT OUTER JOIN w SQL Server 2012
- 10. Konwersja LEFT OUTER JOIN Entity Framework
- 11. sqlite LEFT OUTER JOIN wielu tabel
- 12. LEFT OUTER JOIN zapytanie nie wracać oczekiwanych wierszy
- 13. Jak ładować obrazy za pomocą operatora sieci?
- 14. W jaki sposób INNER/RIGHT/LEFT JOIN mogą być 14 razy wolniejsze niż FULL JOIN?
- 15. Typ operatora linq join ze składnią lambda
- 16. LEFT OUTER JOIN (WYBIERZ * Z TABLE) jest to możliwe?
- 17. Jak wykonać LEFT JOIN w LINQ do encji?
- 18. LINQ to SQL - Left Outer Join z wieloma dołączyć warunki
- 19. Konwersja SQL LEFT OUTER JOIN Query do Kryteriów WZP
- 20. Left Outer Join nie zwraca wszystkich rekordów z podstawowej tabeli
- 21. Jak wykonać uwierzytelnianie za pomocą certyfikatu klienta za pomocą Apache
- 22. Jak wykonać rozpoznawanie gestów za pomocą akcelerometrów
- 23. Jak wykonać żądanie synchroniczne za pomocą Alamofire?
- 24. Czy ktoś używa Right Outer Joins?
- 25. Jak wykonać lewe sprzężenie zewnętrzne za pomocą metod rozszerzenie linq
- 26. FizzBuzz za pomocą trójskładnikowego operatora warunkowego
- 27. Jak wykonać klauzule MySQL IN za pomocą Zend DB?
- 28. Porównywanie wartości zmiennoprzecinkowych/podwójnych za pomocą operatora ==
- 29. sprawdzanie wartości zmiennej za pomocą operatora lub
- 30. Confused za pomocą podwójnego logicznego operatora (!!)
Trzeba by UNII razem wyniki 2 zewnętrzne przyłączyć kwerend (po jednym dla A -> B, a drugi do B -> A) –
dlaczego byś chcieć? Używaj jawnych połączeń, jest to preferowana metoda. Implicit dołącza obszar Antypattern języka SQL. – HLGEM
Dlaczego chcesz to zrobić? Po prostu użyj składni 'FULL OUTER JOIN' (używając wyraźnego łączenia w stylu ANSI przez implicite join jest i tak wysoce zalecany) –