Join articolato su 3 tabelle

race

Nuovo Utente
10 Ott 2020
13
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?
 

marino51

Utente Attivo
28 Feb 2013
2.955
171
63
Lombardia
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:

race

Nuovo Utente
10 Ott 2020
13
0
1
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
 

marino51

Utente Attivo
28 Feb 2013
2.955
171
63
Lombardia
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
 

race

Nuovo Utente
10 Ott 2020
13
0
1
Fatto!
c'è il solito errore..

Possibile sia il tipo di Database?
Ho XAMPP con MariaDB 10.4.17
 

marino51

Utente Attivo
28 Feb 2013
2.955
171
63
Lombardia
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: