Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 12
  1. #1
    Utente bannato
    Registrato dal
    Nov 2007
    residenza
    Acicatena (Catania)
    Messaggi
    1,854

    MySQL - Verificare presenza dello stesso record in due tabelle

    Salve a tutti,
    dovrei verificare la presenza di un record su due tabelle diverse, esattamente:

    TabellaUtenti
    user_id, email

    TabellaStruttura
    user_id, email

    I recordi user_id sono uguali, ma i campi email no!

    Secondo voi, qual è il modo più rapido ed ottimizzato per estrarre tutte i record 'email' da TabellaUtenti e TabellaStruttura evitando doppioni tra le due?

    Grazie.

  2. #2

  3. #3
    Utente bannato
    Registrato dal
    Nov 2007
    residenza
    Acicatena (Catania)
    Messaggi
    1,854
    Grazie, quindi dici così:

    codice:
    SELECT DISTINCT(email) FROM
         (SELECT email FROM TabellaUtenti
    UNION
         SELECT email FROM TabellaStruttura)

  4. #4

  5. #5
    Utente bannato
    Registrato dal
    Nov 2007
    residenza
    Acicatena (Catania)
    Messaggi
    1,854
    Funziona alla grande!

    codice:
    SELECT DISTINCT(email) FROM
         (SELECT email FROM TabellaUtenti WHERE email!=''
    UNION
         SELECT email FROM TabellaStruttura WHERE email!='')

    Grazie.

  6. #6

  7. #7
    Ciao, non che sia errato quanto hai fatto (infatti ti funziona) solo una precisazione: se estrai solo email e usi UNION e non UNION ALL non ti servirebbe nemmeno la DISTINCT perché UNION fa già una DISTINCT implicita infatti è quella la differenza tra UNION e UNION ALL.

    Aggiungo una cosa, ipotizzando che tu voglia poi sfruttare la tua query per inviare mail per ognu user_id così come struttura se un user_id ha dichiarato una mail differente tra le 2 tabelle si finisce per inviare più di una mail per ogni utente.
    Esempio
    Tabella utenti user 1 email pippo@pippo.it
    Tabella struttura user 1 email pluto@pluto.it

    per quell'utente ottieni entrambe la mail. ovviamente dipende dagli scopi che hai ma è importante strutturare bene le interrogazioni rispetto alle attese.
    Se ti stai approcciando all'argomento database dai uno sguardo anche a: SQL, database relazionale, regole di Codd, modello E-R, forme normali, normalizzazione con il mio testo: Semplicemente Database

  8. #8
    Utente bannato
    Registrato dal
    Nov 2007
    residenza
    Acicatena (Catania)
    Messaggi
    1,854
    Smartsql grazie per le ottimi delucidazioni, effettivamente serve proprio a quello da te evidenziato.

    Quindi uso la UNION senza DISTINCT.

    Nel secondo caso, come consigli di procede?

    Grazie.

  9. #9
    Potresti prendere una delle email se ce ne sono più di una per user_id, in modo del tutto arbitrario puoi scegliere di prendere quella MAX, ma potrei prendere la MIN...

    SELECT MAX(TAB.email) FROM
    (
    SELECT user_id,email FROM TabellaUtenti WHERE email!=''
    UNION
    SELECT user_id,email FROM TabellaStruttura WHERE email!=''
    ) TAB
    GROUP BY user_id
    Se ti stai approcciando all'argomento database dai uno sguardo anche a: SQL, database relazionale, regole di Codd, modello E-R, forme normali, normalizzazione con il mio testo: Semplicemente Database

  10. #10
    Utente bannato
    Registrato dal
    Nov 2007
    residenza
    Acicatena (Catania)
    Messaggi
    1,854
    Grazie, una domanda, ma in questo caso il GROUP BY che funzione ha?

Tag per questa discussione

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.