|
|
|
|
Strumenti |
22-01-2017, 19:35 | #1 |
Senior Member
Iscritto dal: Apr 2009
Città: Aci Catena (CT)
Messaggi: 1016
|
[MySQL] WHERE IN and IF NOT EXISTS
Buonasera a tutti,
ho necessità di fare un query su due tabelle: UTENTI user_id | email | telefono | mobile STRUTTURA user | email | telefono | mobile le due tabelle sono in relazione tramite user_id e user. Ho creato la seguente query, che estrae le informazioni basandosi sul campo email: Codice:
SELECT t1.email, t1.user_id, t1.telefono, t1.mobile, t2.telefono, t2.mobile FROM utenti t1, struttura t2 WHERE t1.email IN ( 'email1@email.it', 'email2@email.it', 'email3@email.it' ) and t1.user_id = t2.user ORDER BY t1.email se l'indirizzo da me passato non è presente su UTENTI ma solo su STRUTTURA nella query non ottengo alcun record in merito. Vorrei usare la condizione NOT EXISTS o scegliere un'altra strada in modo tale che se in indirizzo non viene trovato su UTENTI allora la query viene fatto su STRUTTURA. Come posso procedere? Grazie. |
23-01-2017, 10:24 | #2 |
Senior Member
Iscritto dal: Apr 2009
Città: Aci Catena (CT)
Messaggi: 1016
|
Grazie coffe_killer!
Un'altra condizione da aggiungere: non per forza t1.user_id ha una corrispondenza con t2.user. Posso risolvere utilizzando un LEFT JOIN? Codice: Codice:
SELECT t1.email, t1.user_id, t1.telefono, t1.mobile, t2.telefono, t2.mobile FROM utenti t1, LEFT JOIN struttura t2 WHERE ( t1.email IN ( 'email1@email.it', 'email2@email.it', 'email3@email.it' ) OR t2.email IN ( 'email1@email.it', 'email2@email.it', 'email3@email.it' ) ) AND t1.user_id = t2.user ORDER BY t1.email |
23-01-2017, 13:05 | #3 | |
Senior Member
Iscritto dal: Apr 2009
Città: Aci Catena (CT)
Messaggi: 1016
|
Quote:
Immaginali un po' come privati quelli presenti in UTENTI e pubblici quelli presenti in STRUTTURA. |
|
23-01-2017, 14:54 | #4 |
Senior Member
Iscritto dal: Apr 2009
Città: Aci Catena (CT)
Messaggi: 1016
|
Grazie Coffe_Killer!
Stasera provo la query... Due domande: 1) Se una query viene trovata su entrambe le tabelle viene estratta due volte? 2) C'e' un modo che mi permetta di capire se una email e' presente in una tabella piuttosto che nell'altra? Grazie. |
23-01-2017, 18:37 | #5 |
Senior Member
Iscritto dal: Apr 2009
Città: Aci Catena (CT)
Messaggi: 1016
|
Grazie per i preziosi link!
Ne faccio tesoro e li studio il prima possibile... Per il punto 2, lascia stare poca importanza... Comunque la query al momento mi sta restituendo email non presenti nella mia condizione WHERE. |
24-01-2017, 16:23 | #6 |
Senior Member
Iscritto dal: Apr 2009
Città: Aci Catena (CT)
Messaggi: 1016
|
Risolto,
il problema e' che la query mi restituiva solo quella di UTENTI che non sembra coincide con quella si STRUTTURA. Alla fine le ho fatte restituire entrambe. Codice:
SELECT t1.email, t2.email, t1.user_id, t1.mobile, t2.mobile FROM utenti t1 LEFT JOIN struttura t2 ON t1.user_id=t2.user WHERE ( t1.email IN ( 'email1@email.it', 'email2@email.it', 'email3@email.it' ) OR t2.email IN ( 'email1@email.it', 'email2@email.it', 'email3@email.it' ) ) ORDER BY t1.email, t2.email |
Strumenti | |
|
|
Tutti gli orari sono GMT +1. Ora sono le: 22:21.