Announcement

Collapse
No announcement yet.

SQL Abfrage liefert kein Ergebnis!

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • SQL Abfrage liefert kein Ergebnis!

    hallo!<BR>
    <BR>
    ich habe zwei Tabellen die Werkstoff-Daten enthalten mit jeweils<BR>
    min. und max. Werten für den einzelnen gehalt des jeweiligen Elements!<BR>
    Die eine Tabelle enthält die Anforderungen des/der Kunden die andere<BR>
    die an unsere Lieferanten. Die Werte sind alle als "DOUBLE PRECISION"<BR>
    gespeichert!<BR>

    Nun möchte ich bei Neuanlage eine Liste bekommen die mir anzeigt welche<BR>
    Lieferanten die forderungen unserer Kunden erfüllen können.<BR>
    <BR>
    Ich habe folgende Abfrage(als Stored Proc) dafür angelegt:<BR>
    <BR>
    (<B>FOR select <BR>
    l.IDNR, l.bezeichnung, l.version from T_WDLifervor l<BR>
    <BR>
    where ((l.CMIN >= :cmin) and (l.CMAX <= :cmax ) and<BR>
    (l.SIMIN >= :simin) and (l.SIMAX <= :simax) and<BR>
    (l.MNMIN >= :mnmin) and (l.MNMax <= :mnmax) and<BR>
    (l.PMIN >= min) and (l.PMax <= max) and<BR>
    (l.SMIN >= :smin) and (l.SMAX <= :smax) and<BR>
    (l.ALMIN >= :almin) and (l.ALMAX <= :almax) and<BR>
    (l.CUMIN >= :cumin) and (l.CUMAX <= :cumax) and<BR>
    (l.CRMIN >= :crmin) and (l.CRMAX <= :crmax) and<BR>
    (l.BORMIN >= :bormin) and (l.BORMAX<= :bormax)and<BR>
    (l.MOMIN >= :momin) and (l.MOMAX <= :momax) and<BR>
    (l.SNMIN >= :snmin) and (l.SNMAX <= :snmax) and<BR>
    (l.TIMIN >= :timin) and (l.TIMAX <= :timax) and<BR>
    (l.PBMIN >= bmin) and (l.PBMAX <= bmax) and<BR>
    (l.NIMIN >= :nimin) and (l.NIMAX <= :nimax) and<BR>
    (l.VMIN >= :vmin) and (l.VMAX <= :vmax) and<BR>
    <BR>
    (l.Aktiv = 'J'))<BR>

    into :liefervor_idnr, liefervor_bezeichnung, liefervor_version</B><BR>

    Diese Abfrage liefert aber nur die richtigen Ergebnisse zurück wenn<BR> kein "NULL" in einer oder beiden Spalten der Tabellen gespeichert<BR> wurde. Mit "0.000" anstatt "NULL" geht alles wunderbar!<BR>
    Es giebt aber aber nunmehr Werte die keine Vorgabe haben, so das mir<BR>
    ein Default = "0.000" nichts bringt bzw. die Ausgabe auch un- <BR> übersichtlich macht.<BR>

    brauchte dringend eine Antwort

    jürgen

  • #2
    Hallo Jürgen,

    wenn eines der Felder, für die Du in der Where-Klausel die Bereichsprüfung machst, den Status "NULL" hat, dann ist der entsprechende Datensatz korrekterweise nicht in der Ergebnismenge. Grund: Der Status NULL ist kein Wert, sondern eben ein Status, der soviel wie "undefiniert" bedeutet. Ein Feld, das den Status NULL hat, ist weder größer noch kleiner noch gleich noch ungleich irgendeinem konkreten Wert. Lösung:

    ...
    (((l.SIMIN >= :simin) and (l.SIMAX <= :simax)) OR l.SIMAX IS NULL) and
    ...

    Gruss
    Karsten Strobe

    Comment

    Working...
    X