quali sono gli usi delle diverse operazioni di join in sql? Come voglio sapere perché abbiamo bisogno dei diversi join interni ed esterni?Quali sono gli usi delle diverse operazioni di join in sql
risposta
L'unico tipo di join veramente è LEFT OUTER JOIN
. Ogni altro tipo di join può essere riscritto in termini di uno o più join esterni a sinistra e, eventualmente, di un filtro. Allora perché abbiamo bisogno di tutti gli altri? È solo per confondere le persone? Non sarebbe più semplice se ci fosse un solo tipo di join?
Si potrebbe anche chiedere: Perché sono entrambi a <= b
e b >= a
? Non fanno solo la stessa cosa? Non possiamo semplicemente sbarazzarci di uno di loro? Semplificherebbe le cose!
A volte è più semplice scambiare lo <=
con lo >=
anziché scambiare gli argomenti. Allo stesso modo, un join sinistro e un join destro sono la stessa cosa solo con gli operandi scambiati. Ma di nuovo è pratico avere entrambe le opzioni invece di richiedere alle persone di scrivere le loro domande in un ordine specifico.
Un'altra cosa che si può chiedere è: In logica perché abbiamo AND
, OR
, NOT
, XOR
, NAND
, NOR
, ecc? Tutti questi possono essere riscritti in termini di NAND
s! Perché non solo avere NAND
?Bene, è awkward scrivere un OR
in termini di NAND
s, e non è così ovvio quale sia l'intenzione: se si scrive OR
, le persone sanno immediatamente cosa intendi. Se scrivi un numero di NAND
s, non è ovvio ciò che stai cercando di ottenere.
Analogamente, se si desidera eseguire a FULL OUTER JOIN b
, è possibile effettuare un join sinistro e un join destro, rimuovere i risultati duplicati e quindi unione tutti. Ma questo è un dolore e quindi c'è una scorciatoia per questo.
Quando li usi? Ecco una regola semplificata:
- Se si desidera sempre una riga di risultato per ogni riga nella tabella SINISTRA, utilizzare UNO GIUNTO ESTERNO SINISTRO.
- Se si desidera sempre una riga di risultato per ogni riga nella tabella DESTRA, utilizzare UN GIUNTO ESTERNO DESTRO.
- Se si desidera sempre una riga di risultato per ogni riga in entrambe le tabelle, utilizzare FULL OUTER JOIN.
- Se si desidera una riga di risultato solo quando è presente una riga in entrambe le tabelle, utilizzare UNIRE JOIN.
- Se si desidera tutte le coppie di righe possibili, una riga da ogni tabella, utilizzare un CROSS JOIN.
Questo collegamento deve chiarire dubbi tutti si uniscono correlate:
http://www.codinghorror.com/blog/2007/10/a-visual-explanation-of-sql-joins.html
ho usato questo tutorial per capire le operazioni di join prima di postare. La mia domanda è perché abbiamo bisogno di così tante diverse operazioni di join? Quando utilizzare l'operazione di partecipazione? – varunthacker
inner join
- unisce le righe di entrambi i set della partita in base a criteri specificati.
outer join
- seleziona tutto un set, insieme agli elementi corrispondenti o vuoti (se non corrispondenti) dell'altro set. I join esterni possono essere left
o right
, per specificare quale set viene restituito nella sua interezza.
Per rendere più chiare le altre risposte: OTTENETE RISULTATI DIVERSI in base al join scelto, quando le colonne su cui state partecipando contengono valori nulli, ad esempio.
Quindi, per ogni scenario Real-Life esiste un join che si adatta a esso (o si desidera che le righe senza i dati o non nell'esempio valori nulli).
La mia risposta assume 2 tavoli uniti su un unico tasto:
INNER JOIN
- ottenere i risultati che sono sia unire le tabelle (secondo la regola di join)FULL OUTER JOIN
- ottenere tutti i risultati sia da tavolo (prodotto cartesiano)LEFT OUTER JOIN
- ottenere tutti i risultati dalla tabella a sinistra ed i risultati corrispondenti da destra
È possibile aggiungere clausole WHERE
per limitare ulteriormente i risultati.
Utilizzare questi al fine di ottenere ciò che si desidera per ottenere.
- 1. Quali sono gli usi delle funzioni virtuali pure in C++?
- 2. Quali sono gli usi comuni di UDP?
- 3. Quali sono gli usi dei generi polimorfici?
- 4. Quali sono gli usi del buffer circolare?
- 5. Quali sono tutti gli usi di '@' in C#?
- 6. Quali sono gli usi del predicato di errore in Prolog?
- 7. SQL delle operazioni
- 8. Quali sono i vantaggi delle diverse endianness?
- 9. Quali sono gli usi positivi dei moduli in pacchetto OCaml?
- 10. Quali sono gli usi esatti del termine REALM in sicurezza?
- 11. Quali sono alcuni usi intelligenti di LINQ?
- 12. Quali sono gli usi pratici di un costruttore protetto?
- 13. Quali sono gli usi di iter (callable, sentinel)?
- 14. Quali sono alcuni usi interessanti delle funzioni di ordine superiore?
- 15. Quali sono gli usi corretti di @NonNull e @Nullable?
- 16. Quali sono gli usi migliori degli archivi di documenti?
- 17. Quali sono gli usi popolari e contemporanei di Perl?
- 18. Quali sono gli usi comuni delle variabili di condizione in C++?
- 19. Quali sono alcuni usi delle chiusure per OOP?
- 20. Quali sono gli usi pratici del modulo (%) nella programmazione?
- 21. Quali sono gli usi del membro get() dalla classe shared_ptr?
- 22. Quali sono alcuni usi interessanti per gli agenti Java?
- 23. Quali sono gli usi positivi della proprietà css `content`?
- 24. Quali sono gli svantaggi di SQL :: Interp su SQL :: Abstract?
- 25. Quali sono gli hash delle opzioni?
- 26. Cosa sono i campionatori di ombre in OpenGL e quali sono gli usi possibili per loro?
- 27. Quali operazioni sono economiche/costose in mongodb?
- 28. Quali sono alcuni usi dei metadati Clojure?
- 29. Quali operazioni nel nodo sono thread-safe?
- 30. In Android, quali sono gli inserti delle finestre?
perché nel mondo le persone votano questa domanda? – Nix
Um. Forse è una buona domanda dal loro punto di vista? – EvilTeach