Invece di utilizzare parole chiave come FULL OUTER JOIN o FULL JOIN, come posso eseguire il join esterno completo usando la clausola 'where' con l'aiuto dell'operatore '+' ?!Come eseguire FULL OUTER JOIN in ORACLE usando l'operatore '+'?
13
A
risposta
19
Non è possibile (almeno direttamente). Oracle supporta solo un join esterno completo utilizzando la sintassi SQL: 1999.
Puoi fingere da unioning due outer join:
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
E 'molto più leggibile utilizzando SQL: 1999 sintassi:
select a.field1, b.field2
from table_a a full outer join table_b b
on a.id = b.id
+0
grazie Allan ... – Munna89
3
Ecco un esempio è possibile eseguire in Oracle per vedere i risultati per te stesso.
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
è la stessa:
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
Problemi correlati
- 1. FULL OUTER JOIN con SQLite
- 2. SQL: FULL OUTER JOIN su colonne null
- 3. Come faccio a scrivere una query full outer join nell'accesso
- 4. SQL Server: l'ordine del full outer join è importante?
- 5. SQL Server: qual è la differenza tra CROSS JOIN e FULL OUTER JOIN?
- 6. * Giusto * outer join in LINQ
- 7. problema outer join sinistro
- 8. outer join data.table R
- 9. right outer join in SQLAlchemy
- 10. NHibernate sinistra outer join
- 11. Come simulare un 'outer join' in core.logic?
- 12. LEFT OUTER JOIN in Rails 4
- 13. LEFT OUTER JOIN con una clausola WHERE
- 14. Come scrivere sottoquery nell'istruzione OUTER JOIN
- 15. LEFT OUTER JOIN vs SUBSELECT in MySQL
- 16. Differenza tra JOIN e outer join in MySQL
- 17. Come fare Outer Join su> 2 tavoli (Oracle)
- 18. LEFT OUTER JOIN (dà righe aggiuntive) problema
- 19. Problemi con INNER JOIN e sinistra/destra OUTER JOIN
- 20. Come fare outer join su due colonne in Pig Latin
- 21. SQL - LEFT OUTER JOIN e WHERE clausola
- 22. Linq Left Outer Join - DefaultIfEmpty Errore
- 23. MySQL OUTER JOIN Errore di sintassi
- 24. Rimuovi duplicati da SINISTRA OUTER JOIN
- 25. Oracle OUTER JOIN (+) su stringa - Migrazione PostgreSQL
- 26. LEFT OUTER JOIN e NOT EXISTS query
- 27. Confronto inner join e outer join Istruzioni SQL
- 28. sqlite LEFT OUTER JOIN più tabelle
- 29. SQL where clausola per outer join sinistro
- 30. LEFT OUTER JOIN di due collezioni
Si dovrà UNION insieme i risultati di 2 outer join query (uno per A -> B e uno per B -> A) –
perché dovreste volere? Utilizza join espliciti, è il metodo preferito. Entità implicite di SQL antipattern. – HLGEM
Perché dovresti farlo? Basta usare la sintassi 'FULL OUTER JOIN' (si consiglia comunque di utilizzare esplicitamente join di stile ANSI su join impliciti) –