none
Problem mit Abfrage RRS feed

  • Frage

  • Hallo NG,
    ich habe die Abfrage

    Select id1 FromTab1 Whereid1 NOTIN(Selectnummer FromTab2)

    eigentlich in der Art schon 100 genutzt, aber hier bekomme ich kein Ergebnis. Es gibt nummern in Tab2, die nicht als id1 in Tab1 vorhanden sind, aber ich bekomme 0 Datensätze.
    Ich habe das auf 2 SQL-Servern probiert - selbes Ergebnis. Ich weiß nicht, ob das wieder mal ein "Klemmer" ist, aber an der Stelle komme ich nicht weiter.

    Für Hinweise wäre ich dankbar

    Uwe


    Mittelung vom Forum

    Donnerstag, 30. Juli 2020 12:02

Antworten

  • Hallo Uwe,

    ein NOT IN Filer schlägt immer dann fehl, wenn die Unterabfrage einen NULL Wert zurück liefert; das führt zu einer undefinierten Prüfung und das führt zu einem leerem Ergebnis => NULL rausfiltern

    Select id1 
    From Tab1 
    Where id1 NOT IN (Select nummer From Tab2 WHERE NOT nummer IS NULL)


    Olaf Helper

    [ Blog] [ Xing] [ MVP]

    • Als Antwort markiert uwe domschke Donnerstag, 30. Juli 2020 13:36
    Donnerstag, 30. Juli 2020 13:27

Alle Antworten

  • Moin,

    bitte Code als Code posten (2. Button von rechts).

    Die Abfrage oben sucht nach Werten in Tab1.ID1, die nicht in Tab2.nummer vorkommen. Deine verbale Erläuterung ist genau andersherum.


    Evgenij Smirnov

    http://evgenij.smirnov.de

    Donnerstag, 30. Juli 2020 12:31
  • Genau das soll die Abfrage machen, aber ich bekomme 0 Ergebnis, obwohl es einige gibt.

    Was meinst Du mit 2. Button von rechts?


    Mittelung vom Forum

    Donnerstag, 30. Juli 2020 12:41

  • Was meinst Du mit 2. Button von rechts?


    Den Code-Editor. Den Code ist nicht gut lesbar und auch nicht kopierbar. So sieht Code im TN-Forum aus:

    Select id1 From Tab1 Where id1 NOT IN(Select nummer From Tab2)


    Evgenij Smirnov

    http://evgenij.smirnov.de


    Donnerstag, 30. Juli 2020 12:45
  • Genau das soll die Abfrage machen, aber ich bekomme 0 Ergebnis, obwohl es einige gibt.


    Haben id1 und nummer denn genau den gleichen Typ? 

    Evgenij Smirnov

    http://evgenij.smirnov.de

    Donnerstag, 30. Juli 2020 12:48
  • ja beides int

    Mittelung vom Forum

    Donnerstag, 30. Juli 2020 12:57
  • Hallo Uwe,

    ein NOT IN Filer schlägt immer dann fehl, wenn die Unterabfrage einen NULL Wert zurück liefert; das führt zu einer undefinierten Prüfung und das führt zu einem leerem Ergebnis => NULL rausfiltern

    Select id1 
    From Tab1 
    Where id1 NOT IN (Select nummer From Tab2 WHERE NOT nummer IS NULL)


    Olaf Helper

    [ Blog] [ Xing] [ MVP]

    • Als Antwort markiert uwe domschke Donnerstag, 30. Juli 2020 13:36
    Donnerstag, 30. Juli 2020 13:27
  • Hallo Uwe,

    Es gibt nummern in Tab2, die nicht als id1 in Tab1 vorhanden sind

    ausgehend von dieser Beschreibung wäre dein SQL Statement genau falsch herum (so wie es Evgenij bereits geschrieben hat). Korrekt wäre in dem Fall:

    SELECT nummer
    FROM   Tab2
    WHERE  nummer NOT IN ( SELECT id1 FROM Tab1 )


    Gruß, Stefan
    Microsoft MVP - Visual Developer ASP/ASP.NET (2001-2018)
    https://www.asp-solutions.de/ - IT Beratung, Softwareentwicklung, Remotesupport

    Donnerstag, 30. Juli 2020 13:27
    Moderator
  • Genau das war das Problem! Es war ein NULL-Wert dabei. Nun funktioniert es.

    Danke

    Uwe


    Mittelung vom Forum

    Donnerstag, 30. Juli 2020 13:37