Spiegazione di una query

Pubblicità

killon

Utente Attivo
Messaggi
248
Reazioni
17
Punteggio
54
Salve a tutti e buona domenica,
mi serve una spiegazione riguardo alla query in se ma soprattutto al risultato, non capisco moltissimo le join e per questo non capisco questa query :patpat:. grazie mille in anticipo
 

Allegati

  • Cattura.webp
    Cattura.webp
    16 KB · Visualizzazioni: 67
  • Immagine.webp
    Immagine.webp
    25.5 KB · Visualizzazioni: 62
Supponendo che il "right join" sia uguale al "right outer join".
Sai come funziona l'inner join? "unisci" le righe di due tabelle se rispettano una tale condizione, se ci sono righe che non sono "joinabili" semplicemente non le scrivi.
Con il right outer join, te fai normalmente un inner join, però se qualche riga della tabella di destra non joina la scrivi comunque mettendo NULL a sinistra.
In questo caso te hai la lista dei dipendenti che però possono anche fare da capo ad altri dipendenti.
Quindi fai il join per vedere quale dipendente fa da capo a chi
Però, dato che siamo in un right join, mantieni anche i dipendenti che fanno da capo a un dipendente che non è in quella lista

Spero di non aver detto cavolate soprattutto perché ho l'esame di MySQL mercoledì :asd:

Inviato da ONEPLUS A5010 tramite App ufficiale di Tom\'s Hardware Italia Forum
 
Provo a spiegartelo con un esempio:
Tabella 1
IDAlunnoClasse
1Pino3^A
2Aldo
3Agostino4^B
3^P
Tabella 2
ID_AlunnoResidenza
2Palermo
Torino
1Milano
Ora se noi utilizzassimo una inner join otterremmo tutti i valori della tabella 1 + tutti i valori della tabella 2 che hanno un corrispondente della tabella 1:
SELECT * FROM Tabella1
INNER JOIN Tabella2
ON Tabella1.ID = Tabella2.ID_Alunno
IDID_AlunnoAlunnoClasseResidenza
11Pino4^BMilano
22Pino3^APalermo

La left join invece prende tutti i valori della prima tabella + tutti i valori della seconda che corrispondono alla prima, se nella Tabella1 ci fossero dei valori non presenti nella Tabella2, allora i dati della Tabella2 verranno visti come "nulli":
SELECT * FROM Tabella1
LEFT JOIN Tabella2
ON Tabella1.ID = Tabella2.ID_Alunno
IDID_AlunnoAlunnoClasseResidenza
11Pino4^BMilano
22Pino3^APalermo
3NULLPino3^PNULL

Il tuo caso è leggermente diverso in quanto fai una join sulla stessa tabella (la logica è comunque la stessa).
La query dice:
voglio vedere il tutto quello che ho nella d2 (quindi nomeCapo e cognomeCapo), INOLTRE, se hanno dei corrispondenti in d1 allora fammi vedere anche quelli.

Se ancora non ti è chiaro, eccoti un esempio trovato online: https://www.w3schools.com/sql/sql_join_right.asp
 
Pubblicità
Pubblicità

Discussioni Simili

Indietro
Top