Announcement

Collapse
No announcement yet.

immer wieder Ärger mit einfachem WHERE

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

  • immer wieder Ärger mit einfachem WHERE

    Hi,

    ich werd hier noch wahnsinnig.

    Ich habe folgenden Code

    Code:
    SELECT 	ap.DB,
    		ws.ATC_CODE AS  ATC7,
    		SUBSTRING(ws.ATC_CODE,0,3) AS  ATC3,
    		av.KV_NR
    FROM 
    (DBA.STAMM 			AS ws 
    INNER  JOIN  DBA.POSITIONEN 	AS  ap 
    ON (ws.DB = ap.DB) AND  (ws.PZN = ap.SL_PHARMA_ZENTRAL)) INNER  JOIN  DBA.VERORDNUNG AS  av ON  (ap.DB =av.DB) AND  (ap.ID_VERORDNUNG = av.ID_VERORDNUNG)
    häng ich jetzt mein WHERE ap.DB=’HEX5’ an bekomme ich meine ERgebnisse

    auch bei WHERE ap.DB=’HEX4’ ist alles ok.

    Aber bei WHERE ap.DB=’HEX5’ or ap.DB=’HEX4’ bleibt alles leer.

    Wieso?
    Gruß Thomas

  • #2
    [highlight="sql"]
    WHERE ap.DB in ( 'HEX4', 'HEX5')
    [/highlight]

    Comment


    • #3
      Hallo Markus,

      vielen Dank für deine Antwort, leider ist das Ergebnis dasselbe. Die Abfrage läuft knapp 2 Sekunden und das wars dann.
      Gruß Thomas

      Comment


      • #4
        Steht noch mehr in where ?

        Comment


        • #5
          nein, mehr ist es nicht, alles eigentlich ganz einfach
          Gruß Thomas

          Comment


          • #6
            Hallo tom_r,

            sind die Datentypen in den Bedingungen für die Joins identisch oder finden dort mglws. implizite Typkonvertierungen von String nach Number statt? Falls eine solche Konvertierung fehlschlägt (weil statt erwartetem numerischen ein alphanumerischer Wert in einem DS steht), kann dies zum Abbruch führen. Allerdings sollte da eine entsprechende Fehlermeldung ausgegeben werden.

            Hintergrund:
            Der Server optimiert bei einer einzelnen WHERE-Bedingung mglws. auf einen Index und führt die WHERE-Bedingung VOR den Joins aus, so das "fehlerhafte" Werte in z.B. ap.DB = 'Hex6' nicht zum Tragen kommen.
            Bei einer OR-verknüpften WHERE-Bedingung greift diese Optimierung u.U. nicht, so daß die Joins zuerst ausgeführt werden und dabei dann "Nebeneffekte" auftreten.

            Gruß Falk
            Wenn du denkst du hast alle Bugs gefunden, dann ist das ein Bug in deiner Denksoftware.

            Quellcode ohne ein Mindestmaß an Formatierung sehe ich mir nicht an! Ich leiste keinen Privatsupport per Mail oder PN!

            Comment


            • #7
              Hallo Falk,

              uiiiihhh, heftiger Tobak für einen blutigen Anfänger auf seinen ersten Gehversuchen.

              sprichst Du jetzt von der WHERE-Zeile oder von der JOIN-Zeile?

              Was für mich jetzt genauso merkwürdig war, ich habe WHERE ap.DB=’HEX4’ verwendet (da funktioniert die Abfrage ja) und bei SELECT eine Zeile ergänzt: ws.NAME_KURZ,

              Und jetzt bricht die Abfrage auch sofort wieder ab. Der Felödname ist richtig geschrieben, obwohl, kommt da sonst nicht eine Fehlermedlung Datenfeld nciht gefunden? Ich kapier gerade gar nix mehr:-(
              Gruß Thomas

              Comment


              • #8
                Originally posted by tom_r View Post
                ...sprichst Du jetzt von der WHERE-Zeile oder von der JOIN-Zeile?
                Ich spreche von der JOIN-Zeile. Sind die dort verglichenen Felder jeweils vom gleichen Typ? Wenn nicht, was passiert wenn du eine explizite Typumwandlung verwendest?

                Gruß Falk
                Wenn du denkst du hast alle Bugs gefunden, dann ist das ein Bug in deiner Denksoftware.

                Quellcode ohne ein Mindestmaß an Formatierung sehe ich mir nicht an! Ich leiste keinen Privatsupport per Mail oder PN!

                Comment

                Working...
                X