Visualizzazione dei risultati da 1 a 9 su 9
  1. #1
    Utente di HTML.it L'avatar di arw
    Registrato dal
    Dec 2007
    Messaggi
    149

    campi nome, Cognome estrapolare gli esclusi da due tabelle

    Ciao, ho un problema che non riesco a risolvere...
    devo fare una query che fa un controllo su 2 tabelle. Queste hanno un elenco di cognomi, e nomi, e devo estrapolare i mancanti.

    tabella A con tutto l'elenco completo di dipendenti
    campi tabella:
    id
    Cognome
    Nome

    tabella B con solo alcuni dipendenti
    campi tabella:
    Cognome
    Nome


    io devo avere gli esclusi
    entrambe le tabelle hanno in comune solo il campo Cognome e Nome.
    Non ci sono Id che posso usare.

    come devo fare?
    grazie.

  2. #2
    Utente di HTML.it L'avatar di nicola75ss
    Registrato dal
    Nov 2004
    Messaggi
    12,922
    codice:
    select tabA.*
    from tabA
    left join tabB
    on concat(tabA.nome,' ',tabA.cognome) = concat(tabB.nome,' ',tabB.cognome)
    where concat(tabB.nome,' ',tabB.cognome) is null

  3. #3
    Utente di HTML.it L'avatar di telegio
    Registrato dal
    Sep 2001
    Messaggi
    2,591
    OOOPS... io gli avrei detto, pur non conoscendo, di usare le subquery con NOT IN
    http://database.html.it/articoli/leg...uovo-database/
    mi sembrava il suo caso..

    ho imparato qualcosa pure oggi..

  4. #4
    Utente di HTML.it L'avatar di arw
    Registrato dal
    Dec 2007
    Messaggi
    149
    grazie per la tempestività

    perchè devo fare is null...?
    non ho nessun campo che ha volore null

    l'ho provata ma ho un errore con il concat

    il not in l'ho provato nei vari test che ho fatto ma non mi ha dato il risultato corretto; però forse sbagliavo la sintassi...
    non so

  5. #5
    Utente di HTML.it L'avatar di nicola75ss
    Registrato dal
    Nov 2004
    Messaggi
    12,922
    Innanzitutto che database stai usando?

  6. #6
    Utente di HTML.it L'avatar di arw
    Registrato dal
    Dec 2007
    Messaggi
    149
    sql server

  7. #7
    Utente di HTML.it L'avatar di nicola75ss
    Registrato dal
    Nov 2004
    Messaggi
    12,922
    In questa sezione del forum, quando non viene specificato diversamente, si dà per scontato l'uso di mysql. Quando il db utilizzato è diverso è bene specificarlo.

    codice:
    select tabA.*
    from tabA
    left join tabB
    on tabA.nome + ' ' + tabA.cognome = tabB.nome + ' ' + tabB.cognome
    where tabB.nome + ' ' + tabB.cognome is null

  8. #8
    Utente di HTML.it L'avatar di arw
    Registrato dal
    Dec 2007
    Messaggi
    149
    ops, scusatemi.

    avevo però provato a fare le correzioni come poi ho verificato con la tua risposta e ho provato .. mi pare corretta!
    grazie.

    sbagliavo a testarli singolarmente , allora!
    Grazie grazie mille.

  9. #9
    Utente di HTML.it L'avatar di nicola75ss
    Registrato dal
    Nov 2004
    Messaggi
    12,922
    Sul perchè debba utilizzare is null per fare il confronto prova a eseguire questa query

    codice:
    select tabA.*,tabb.*,tabB.nome + ' ' + tabB.cognome
    from tabA
    left join tabB
    on tabA.nome + ' ' + tabA.cognome = tabB.nome + ' ' + tabB.cognome
    e lo capirai da te.
    Leggi magari un pò di documentazione sulla sintassi dei join.

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.