Join articolato su 3 tabelle

  • Creatore Discussione Creatore Discussione race
  • Data di inizio Data di inizio

race

Nuovo Utente
10 Ott 2020
18
0
1
Salve,
sto impazzendo per eseguire una query su 3 tabelle:

- nelle tabelle 1 e 2 ci sono solo i campi: id auto-increment e il valore
- nella tabella 3 ci sono i campi: id auto-increment, id della tabella 1, id della tabella 2

Codice:
tabella1
-------------
id | valore

tabella2
-------------
id | valore

tabella3
------------------------
id | id_t1 | id_t2


Vorrei estrarre tutti i record delle tabelle 1 e 2 che non esistono nella tabella 3, utilizzando (id_t1 + id_t2) come chiave univoca.

es:
Codice:
Risultato della query:
----------------------------------------------
valore_t1 | valore_t2
valore_t1 | valore_t2
valore_t1 | valore_t2
valore_t1 | valore_t2
valore_t1 | valore_t2

E' possibile farlo?
 
nella tabella 1 ho inserito gli elementi da 1001 a 1012
nella tabella 2 ho inserito gli elementi da 2001 a 2007
nella tabella 3 ho inserito le combinazioni di tabella 1 & tabella 2 con esclusione di 2 elementi

con questa query, ottengo le 2 combinazioni escluse
SQL:
select t3.id, x.id_t1, x.id_t2 from (
  select
    t1.id as id_t1
  , t2.id as id_t2
  from tabella1 t1, tabella2 t2) x
left join tabella3 t3 ON x.id_t1 = t3.id_t1 AND  x.id_t2 = t3.id_t2
where t3.id is NULL
order by t3.id, x.id_t1, x.id_t2

questo il risultato
1610276274682.png


ps, puoi vedere l'effetto che fa anche togliendo la clausola WHERE
1610276322212.png
 
Ultima modifica:
Ciao,
mi da questo errore: Unknown column 't3.id_t1' in 'on clause'

chiaramente ho sostituito tabella1 t1, tabella2, tabella3 con i nomi reali e id con ID
 
mi da questo errore: Unknown column 't3.id_t1' in 'on clause'

riprendi la mia query e sostituisci SOLO i nomi delle tabelle senza togliere t1, t2, t3 e lasciando al suo posto la x !!

la query é scritta così proprio per ridurre la possibilità di errore nella sostituzione dei nomi, cosa che hai provocato
 
Fatto!
c'è il solito errore..

Possibile sia il tipo di Database?
Ho XAMPP con MariaDB 10.4.17
 
tabella3 ------------------------
id | id_t1 | id_t2

controlla il nome delle colonne, io ho usato i nomi indicati
se il nome "t3.id_t1" é sbagliato,
o é sbagliato il nome della tabella che afferisce a t3 ( t3 é l'alias della tabella3 )
o é sbagliato il nome della colonna id_t1
 
Ultima modifica:

Discussioni simili