Announcement

Collapse
No announcement yet.

Rückgabemengendiskrepanz QueryAnalyser/Delphi

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

  • Rückgabemengendiskrepanz QueryAnalyser/Delphi

    <B> Hallo</B><BR>
    Ich habe folgendes Problem:<BR>
    Über meine Anwendung verschicke ich folgendes SQL-Batch <BR>
    per BDE an den MSSQL-Server<BR>
    <PRE>
    <I>
    SELECT Count(*)
    From 'TABLENAME'
    WHERE
    (
    Ausdruck1 <= 67890 AND
    (Ausdruck2 IN (1)) AND
    ((Ausdruck3 = 1) AND (Ausdruck4 NOT IN (7,8,9)))
    )
    AND
    (
    (
    (Ausdruck5 >= 12345) AND
    ((Ausdruck6 IS NULL) OR (Ausdruck6 = '') OR (Ausdruck6 > 67890))
    )
    OR
    ((Ausdruck5 <= 67890) AND (NWFRIST >= 12345 ))
    OR
    (
    ((Ausdruck5 IS NULL) OR (Ausdruck5 = '')) AND
    ((Ausdruck6 IS NULL OR Ausdruck6 = ''))
    )
    )
    </I>
    </PRE>
    Wenn ich dieses Select im Delphi5 SQL-Explorer ausführe bekomme ich als <BR>
    Rückgabemenge 8000-Datensätze zurück, im MS-Query-Analyser jedoch 7900-Datensätze <BR>
    7900-Datensätze wäre richtig!<BR>
    Kann mir jemand dieses Phänomen erklären?<BR>
    <BR>
    Gruß
    André

  • #2
    Hallo,

    gib doch mal die Ergebnismengen in verschiedene Dateien aus und mache ein DIFF. Es sind ja nur 100 Zeilen unterschied. Dann muesste man doch an den Daten erkennen koennen, durch welche Bedingung sie selektiert wurden.

    Kann man bei einem der Tools einen max. Ergebnismenge definieren? Kann man ein Timeout angeben? Da sind ja ziemlich viele "unnoetige" Klammern drin. Werden diese unterschiedlich interpretiert?

    So auf Anhieb wuerde ich sagen, dass dieselbe Abfrage auch dieselbe Treffermenge liefert.

    Ansonsten kann man noch Teile des Statements entfernen und testen, wann die Treffermenge identisch ist. Dann wuesste man, welcher Teil der Abfrage den "Fehler" ausloest. Dann kann man noch neu ueberlegen.

    Da kann man sich wohl nur "rantasten"...

    Stefa

    Comment


    • #3
      Hallo Stefan, <BR>
      die Stelle des Unterschieds liegt in der 2.Where-Bedingung( IN xxx ).<BR>
      Die Ausgabe in eine seperate Datei und DIFF ist der noch fehlende Stein!<BR>
      Danke.<BR>
      <BR>
      André
      <BR>
      PS: Die vielen Klammern sind nur zur Übersichtlichkeit (was zu wem)

      Comment


      • #4
        Hallo,

        verstehe ich noch nicht. Ist das Problem jetzt geloest? Gibts in einem Tool kein IN? Was war jetzt falsch???

        Bin so neugierig?

        Stefa

        Comment

        Working...
        X