Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 11
  1. #1

    [MsSql] Problema NOT IN

    Vi pongo un problema, forse un bug di MSSQL... qualcuno per caso ne è a conoscienza?

    select campo1 from tabella1
    where campo1 NOT IN (select distinct campo2 from tabella2)

    risultato: 0 rows

    contenuto tabelle:

    tabella1-Campo1:
    a
    b
    c
    d
    e
    f

    Tabella2-Campo2:
    b
    f

    Grazie

  2. #2
    Utente di HTML.it L'avatar di pietro09
    Registrato dal
    Jan 2002
    Messaggi
    10,116
    quella query mi funziona regolarmente
    Pietro

  3. #3
    a me no^^

    con sql2005 non mi va... che versione stai usando?

  4. #4
    Utente di HTML.it L'avatar di pietro09
    Registrato dal
    Jan 2002
    Messaggi
    10,116
    Originariamente inviato da Sr.Aximili
    a me no^^

    con sql2005 non mi va... che versione stai usando?
    mi dispiace, ho confuso con MySql
    Pietro

  5. #5
    Utente di HTML.it L'avatar di Joe Taras
    Registrato dal
    Nov 2003
    residenza
    Taranto
    Messaggi
    955
    Ho provato con query analizer di SQL Server 2000
    CREATE TABLE #T1 (campo1 char(1))

    CREATE TABLE #T2 (campo2 char(1))

    INSERT INTO #T1 VALUES('a')
    INSERT INTO #T1 VALUES('b')
    INSERT INTO #T1 VALUES('c')
    INSERT INTO #T1 VALUES('d')
    INSERT INTO #T1 VALUES('e')
    INSERT INTO #T1 VALUES('f')

    INSERT INTO #T2 VALUES('b')
    INSERT INTO #T2 VALUES('f')

    SELECT campo1 FROM #T1
    WHERE campo1 NOT IN (SELECT DISTINCT campo2 FROM #T2)

    a me funziona. Mi restituisce 4 righe.

    Vedo di provare anche con MsSQL 2005 e ti dico come va.

  6. #6
    Utente di HTML.it L'avatar di Joe Taras
    Registrato dal
    Nov 2003
    residenza
    Taranto
    Messaggi
    955
    Ho provato anche con MsSql 2005 e funziona. Non saprei cosa dirti, verifica i tipi dei campi

  7. #7
    la DISTINCT sulla seconda tabella potrebbe riportarti un NULL, il che potrebbe falsare i risultati. controlla

  8. #8
    Utente di HTML.it L'avatar di Joe Taras
    Registrato dal
    Nov 2003
    residenza
    Taranto
    Messaggi
    955
    Originariamente inviato da optime
    la DISTINCT sulla seconda tabella potrebbe riportarti un NULL, il che potrebbe falsare i risultati. controlla
    Però se ci fidiamo di come ha riempito le tabelle il NULL non dovrebbe comparire.

    Cmq ho fatto pure un'altra prova (mi sono meravigliato sia andata bene), ho svuotato la seconda tabella e mi da 6 righe! Anche io mi aspettavo che con la tabella vuota sarebbe uscito qualcosa di inaspettato.

  9. #9

    Re: [MsSql] Problema NOT IN

    Originariamente inviato da Sr.Aximili
    Vi pongo un problema, forse un bug di MSSQL... qualcuno per caso ne è a conoscienza?

    select campo1 from tabella1
    where campo1 NOT IN (select distinct campo2 from tabella2)

    risultato: 0 rows

    contenuto tabelle:

    tabella1-Campo1:
    a
    b
    c
    d
    e
    f

    Tabella2-Campo2:
    b
    f

    Grazie
    in tabella2 (*quella vera* ) hai dei campo2 che sono null
    ed il fatto che non ti ritorni nessun record non è un bug
    ma del tutto logico.

  10. #10
    Utente di HTML.it L'avatar di Joe Taras
    Registrato dal
    Nov 2003
    residenza
    Taranto
    Messaggi
    955

    Re: Re: [MsSql] Problema NOT IN

    Originariamente inviato da sspintux
    in tabella2 (*quella vera* ) hai dei campo2 che sono null
    ed il fatto che non ti ritorni nessun record non è un bug
    ma del tutto logico.
    Mmm sai che hai perfettamente ragione, credo che anche optime volesse dire la stessa cosa. La prova che ho fatto io (svuotando tutta la seconda tabella) non è corretta.

    Attendiamo risposte dal nostro amico.

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.