Visualizzazione dei risultati da 1 a 7 su 7
  1. #1

    [MySQL] estrarre i dati non corrispondenti tra 3 tabelle

    vengo subito alla questione con un esempio che per semplicità riduco al minimo:

    ho 3 tabelle (tabella1, tabella2, tabella3).
    ogni tabella ha una colonna:
    tabella1 -> colonna1
    tabella2 -> colonna2
    tabella3 -> colonna3

    contenuti delle colonne:
    colonna1:
    A1
    A2
    A3
    A4
    A5

    colonna2:
    A1
    A5
    A1

    colonna3:
    A2
    A2
    A5

    mi serve una query che mi restituisca A3 e A4 che sono le uniche righe di colonna1 che non hanno corrispondenza in colonna2 e colonna3.

    spero sia chiaro.
    grazie.

  2. #2
    Quote Originariamente inviata da ellepi1971 Visualizza il messaggio
    vengo subito alla questione con un esempio che per semplicità riduco al minimo:

    ho 3 tabelle (tabella1, tabella2, tabella3).
    ogni tabella ha una colonna:
    tabella1 -> colonna1
    tabella2 -> colonna2
    tabella3 -> colonna3

    contenuti delle colonne:
    colonna1:
    A1
    A2
    A3
    A4
    A5

    colonna2:
    A1
    A5
    A1

    colonna3:
    A2
    A2
    A5

    mi serve una query che mi restituisca A3 e A4 che sono le uniche righe di colonna1 che non hanno corrispondenza in colonna2 e colonna3.
    Ciao ,
    potresti eseguire una left join tra tabella1
    ed una sub query che ti restituisce la union tra tabella2 e tabella3
    where ....
    Ultima modifica di sspintux; 19-02-2014 a 11:19

  3. #3
    Quote Originariamente inviata da sspintux Visualizza il messaggio
    Ciao ,
    potresti eseguire una left join tra tabella1
    ed una sub query che ti restituisce la union tra tabella2 e tabella3
    where ....
    innanzitutto grazie per la risposta.

    la UNION non la posso fare perchè le colonne hanno 2 nomi differenti e cambiargli nome vorrebbe dire andare a riprendere tutte le query che utilizzano quelle colonne e modificarle.

    esistono altri metodi?

  4. #4
    Quote Originariamente inviata da ellepi1971 Visualizza il messaggio
    innanzitutto grazie per la risposta.

    la UNION non la posso fare perchè le colonne hanno 2 nomi differenti e cambiargli nome vorrebbe dire andare a riprendere tutte le query che utilizzano quelle colonne e modificarle.

    esistono altri metodi?
    ... prima hai detto che ti servono solo i campi di tabella1
    nel qual caso il problema che sollevi è inesistente perché
    per eseguire una UNION non è affatto necessario cambiare
    il nome ai campi delle tabelle.

    Prova a spiegare meglio la difficoltà che incontri

  5. #5
    seguendo il tuo 1° consiglio sono riuscito a unire con UNION la tabella2 con la tabella3.

    facendo così:
    (SELECT tabella2.colonna2 FROM tabella2 where1)UNION
    (SELECT tabella3.colonna3 FROM tabella3 where 1)

    ora sto provando la LEFT ma per ora non mi esce...

  6. #6
    Quote Originariamente inviata da ellepi1971 Visualizza il messaggio
    seguendo il tuo 1° consiglio sono riuscito a unire con UNION la tabella2 con la tabella3.

    facendo così:
    (SELECT tabella2.colonna2 FROM tabella2 where1)UNION
    (SELECT tabella3.colonna3 FROM tabella3 where 1)

    ora sto provando la LEFT ma per ora non mi esce...
    codice:
    select tabella1.*
    from
    tabella1
    left join
    (
     SELECT tabella2.colonna2 as colonnax FROM tabella2
     UNION  
     SELECT tabella3.colonna3 FROM tabella2
    ) as q
    on tabella1.colonna1=q.colonnax
    where ....

  7. #7
    Quote Originariamente inviata da sspintux Visualizza il messaggio
    codice:
    select tabella1.*
    from
    tabella1
    left join
    (
     SELECT tabella2.colonna2 as colonnax FROM tabella2
     UNION  
     SELECT tabella3.colonna3 FROM tabella2
    ) as q
    on tabella1.colonna1=q.colonnax
    where ....
    grazie, ho risolto aggiungendo alla fine:

    q.colonnax is null

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.