• Home
  • Forum
  • Hosting, Server e Sistemi
  • Database
  • MySQL

[MySQL] WHERE IN and IF NOT EXISTS

  • Creatore Discussione Creatore Discussione felino
  • Data di inizio Data di inizio 22 Gen 2017

felino

Utente Attivo
12 Dic 2013
941
10
18
Aci Catena (Catania)
  • 22 Gen 2017
  • #1
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

Ovviamente c'è un limite:
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.
 

marino51

Utente Attivo
28 Feb 2013
3.205
207
63
Lombardia
  • 22 Gen 2017
  • #2
Codice:
select ....
from utenti t1
full outer 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'
)
attenzione all'OR
la tabella non presente verrà presentata con "null" (ms sql)
 

felino

Utente Attivo
12 Dic 2013
941
10
18
Aci Catena (Catania)
  • 23 Gen 2017
  • #3
Grazie Marino51!

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

Nel caso in cui la mail viene trovata in t2 e non in t1 l'ORBER BY t1.email potrebbe influire negativamente?
 

marino51

Utente Attivo
28 Feb 2013
3.205
207
63
Lombardia
  • 23 Gen 2017
  • #4
con left join, vengono estratti gli elementi dalla tabella t1 con o senza corrispondenza in t2
quindi ok order by, inutile or con condizione su t2
 

felino

Utente Attivo
12 Dic 2013
941
10
18
Aci Catena (Catania)
  • 23 Gen 2017
  • #5
Il problema e' proprio questo: che alcuni indirizzi email possono essere presenti in t1 e non in t2 e viceversa.

Come faccio a far la query sul t2?

Grazie,
 

marino51

Utente Attivo
28 Feb 2013
3.205
207
63
Lombardia
  • 24 Gen 2017
  • #6
anziché usare left join sostituisci con right join e tutte le condizioni che hai applicato a t1 le applichi solo a t2
 

marino51

Utente Attivo
28 Feb 2013
3.205
207
63
Lombardia
  • 24 Gen 2017
  • #7
meglio scrivere ..
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'
      )
AND
    t1.user_id = t2.user
ORDER BY
    t1.email


SELECT
    t1.email, t1.user_id, t1.telefono, t1.mobile, t2.telefono, t2.mobile
FROM
    struttura t2,
    LEFT JOIN utenti t1
WHERE
      t2.email IN (
      'email1@email.it',
      'email2@email.it',
      'email3@email.it'
      )
AND
    t2.user = t1.user_id
ORDER BY
    t2.email
 

felino

Utente Attivo
12 Dic 2013
941
10
18
Aci Catena (Catania)
  • 24 Gen 2017
  • #8
Esatto Marino,Risolto,
la query da me usata coincide con la tua!

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
 
Devi accedere o registrarti per poter rispondere.

Discussioni simili

M
errore lettura data nel mysql con funzione Where
  • master1986
  • 25 Ott 2015
  • PHP
Risposte
1
Visite
1K
PHP 26 Ott 2015
master1986
M
I
estrazione valore da mysql where nome_campo è uguale alla session_id
  • iperboreo
  • 13 Ott 2012
  • PHP
Risposte
10
Visite
2K
PHP 14 Ott 2012
iperboreo
I
M
Personalizzare Mysql su una macchina VPS in Aruba
  • morenog
  • 14 Gen 2025
  • Server Dedicati e VPS
Risposte
0
Visite
655
Server Dedicati e VPS 14 Gen 2025
morenog
M
S
Utilizzare MySql con maschere Access
  • staiul
  • 27 Nov 2024
  • MySQL
Risposte
0
Visite
335
MySQL 27 Nov 2024
staiul
S
K
form Inserimento record mysql
  • Kiko74b
  • 21 Gen 2023
  • PHP
Risposte
2
Visite
1K
PHP 25 Gen 2023
WmbertSea
P
Mysql lento a cancellare
  • paolo.ladoni
  • 18 Nov 2022
  • MySQL
Risposte
1
Visite
1K
MySQL 22 Nov 2022
marino51
P
Codifica caratteri speciali mysql php
  • Peterrey76
  • 24 Ott 2022
  • PHP
Risposte
2
Visite
2K
PHP 23 Apr 2025
webest
N
MAX() + ADD_DATE - per update su Mysql
  • Namaste!
  • 20 Lug 2022
  • MySQL
Risposte
0
Visite
2K
MySQL 20 Lug 2022
Namaste!
N
F
Applicazione PHP/MySQL per prenotazioni: limitare il numero massimo di posti prenotabili
  • Fra_23
  • 25 Giu 2022
  • PHP
  • 2
Risposte
20
Visite
4K
PHP 16 Lug 2022
zorro
L
tipo boolean non funzionante su mariadb (mysql). E codice php 7.4.
  • luigi777
  • 18 Giu 2022
  • PHP
Risposte
0
Visite
807
PHP 18 Giu 2022
luigi777
L
M
PHP/MySQL - Estrarre valori min e max di ogni gruppo
  • Max61
  • 10 Giu 2022
  • PHP
Risposte
5
Visite
2K
PHP 13 Giu 2022
Max61
M
W
MySQL ciclo in SELECT
  • wolfland
  • 26 Mag 2022
  • MySQL
Risposte
0
Visite
2K
MySQL 26 Mag 2022
wolfland
W
L
Mysql gestionale multipiattaforma
  • lucavalentino
  • 7 Apr 2022
  • MySQL
Risposte
0
Visite
2K
MySQL 7 Apr 2022
lucavalentino
L
W
MySQL SELECT list dinamica
  • wolfland
  • 2 Feb 2022
  • MySQL
Risposte
0
Visite
2K
MySQL 2 Feb 2022
wolfland
W
M
utilizzo mysql in nodejs - crea createdAt e updateAt
  • misonsan
  • 31 Dic 2021
  • MySQL
Risposte
1
Visite
3K
MySQL 31 Dic 2021
misonsan
M
T
colonne di tabelle mysql ordinate
  • twogate
  • 28 Nov 2021
  • MySQL
Risposte
0
Visite
2K
MySQL 28 Nov 2021
twogate
T
M
Sintassi "personalizzata" per mysql workbench?
  • mattiac
  • 27 Set 2021
  • MySQL
Risposte
0
Visite
3K
MySQL 27 Set 2021
mattiac
M
A
Mysql
  • andreainter
  • 26 Ago 2021
  • MySQL
Risposte
0
Visite
1K
MySQL 26 Ago 2021
andreainter
A
F
Ricreare struttura php+mysql su Xampp
  • francescoITA
  • 23 Ago 2021
  • Apache
Risposte
0
Visite
6K
Apache 23 Ago 2021
francescoITA
F
M
Array associativi php su 2 campi mysql
  • maxnegri2036
  • 14 Ago 2021
  • PHP
Risposte
10
Visite
2K
PHP 16 Ago 2021
zorro
Condividi:
Facebook X (Twitter) LinkedIn WhatsApp e-mail Condividi Link
  • Home
  • Forum
  • Hosting, Server e Sistemi
  • Database
  • MySQL
  • Italiano
  • Termini e condizioni d'uso del sito
  • Policy Privacy
  • Aiuto
  • Home
Community platform by XenForo® © 2010-2024 XenForo Ltd. | Traduzione a cura di XenForo Italia
Menu
Accedi

Registrati

  • Home
  • Forum
    • Nuovi Messaggi
    • Cerca...
  • Novità
    • Featured content
    • Nuovi Messaggi
    • Ultime Attività
X

Privacy & Transparency

We use cookies and similar technologies for the following purposes:

  • Personalized ads and content
  • Content measurement and audience insights

Do you accept cookies and these technologies?

X

Privacy & Transparency

We use cookies and similar technologies for the following purposes:

  • Personalized ads and content
  • Content measurement and audience insights

Do you accept cookies and these technologies?