C.A: logischer Fehler

Hallo alle mit einander,

ich habe einen logischen Fehler und irgendwie komme ich nicht da hinter.

Also, ich habe ein Skript was sich merkt wann es zu letzten Mal gestartet wurde aber nur das Datum nicht die Uhrzeit merkt.

Ich frage die Datenbank ab,
SELECT *
FROM VIEW_EXCHANGE
WHERE (FADeaktiv = 'FF')
AND FDatumEdit > '"&s(0)&"'
OR ADatumEdit > '"&s(0)&"'
OR MDatumEdit > '"&s(0)&"'
OR FDatumNeu > '"&s(0)&"'

Die Abfrage geht auch aber wenn ich das noch mal starte ist der wert nicht 0
Sagen wir mal

Ist das Datum größer als das was der letzte Start.

z.B. man hat am 06.12.2004 das Script gestartet und man läst das Script heute (20.12.2004) durchlaufen.
Alle Daten die > sind als 06.12.2004 rausgeben
Wenn ich rein logisch das Script noch mal starte, muss doch nix rauskommen
Alle Daten die > sind als der 20.12.2004 rausgeben (20.12.2004 > 20.12.2004)
ist doch gleich nicht größer es müsste doch nix rauskommen !

Wie seht ihr das!! Oder bin ich jetzt total vom weg ab gekommen???

Gruß

Corinna

P.S . hoffentlich habe ich mich zu besch… ausgedrückt

  1. Hi Corinna,

    ich habe absolut keine Ahnung von SQL-zeuchs.

    Lass mal sehen...

    SELECT *
    FROM VIEW_EXCHANGE
    WHERE (FADeaktiv = 'FF')
    AND FDatumEdit > '"&s(0)&"'
    OR ADatumEdit > '"&s(0)&"'
    OR MDatumEdit > '"&s(0)&"'
    OR FDatumNeu > '"&s(0)&"'

    Also da sind OR-Verknüpfungen und eine AND-Verknüpfung. Warum? Warum sind das nicht _alles_ AND-Verknüpfungen? Also wie gesagt, ich verstehe davon nix, aber für mich sieht das aus wie eine Kette von logischen Verknüpfungen. Kann es sein, dass bei diesen vielen ORs ein erfülltes OR ausreicht, um die komplette Bedingung zu erfüllen?

    Liebe Grüße aus Ellwangen,

    Felix Riesterer.

    1. Also da sind OR-Verknüpfungen und eine AND-Verknüpfung. Warum? Warum sind das nicht _alles_ AND-Verknüpfungen? Also wie gesagt, ich verstehe davon nix, aber für mich sieht das aus wie eine Kette von logischen Verknüpfungen. Kann es sein, dass bei diesen vielen ORs ein erfülltes OR ausreicht, um die komplette Bedingung zu erfüllen?

      Es sind alles OR Verknüpfungen weil ich nach Änderung suche wenn das AND Verknüpfungen wären müssten ja alle Spalten gleich sein.

      oder dies oder dies

      und bei und ist es und das und das und das must du holen z.B ;-)

      Gruß

      Corinna

      1. Hi Corinna,

        AND FDatumEdit > '"&s(0)&"'

        ist eine AND-Verknüpfung.

        Einfach mal so: Was tut sich denn, wenn das auch eine OR-Verknüpfung wäre?
        Und was passiert, wenn alles AND-Verknüpfungen sind?

        Tut mir leid, ich habe damit keine Erfahrung, aber das würde ich einfach mal ausprobieren. :-)

        Liebe Grüße aus Ellwangen,

        Felix Riesterer.

        1. Hi Felix,

          ich versuche es mal zu erklären!

          Einfach mal so: Was tut sich denn, wenn das auch eine OR-Verknüpfung wäre?
          Und was passiert, wenn alles AND-Verknüpfungen sind?

          SELECT * FROM Tabellenname (ist klar was da raus kommt, es werden alle Spalten und Zeilen zurückgegeben.

          SELECT * FROM Tabellenname WHERE FADeaktiv = ‘FF’ (hier sieht man schon eine Einschränkung gebe mir alle Zeilen zurück wo FF drin steht in der Spalte FADeaktive)

          SELECT * FROM Tabellenname WHERE FADeaktive = ’FF’ AND FDatumEdit > ’20.12.2004’ (Sonst steht da eine Variable) (also hier ist es so gebe mir alle Zeilen die in der Spalte FADeaktive  FF habe und wo das Datum größer ist als das andere Datum (die Variable)

          SELECT * FROM Tabellenname WHERE FADeaktive = ’FF’ AND FDatumEdit > ’20.12.2004’ OR ADatumEdit > ’20.12.2004’ (die gleiche Variable) (also hier ist es so gebe mir alle Zeilen die in der Spalte FADeaktive  FF habe und wo das Datum größer ist als das andere Datum (die Variable) oder wenn die in der Spalte FDatumEdit keine findest die größer ist als die Variable denn  suche in der Spalte ADatumEdit weiter uns....

          Wenn ich diese ich diese Abfrage am 01.12.2004 das letzte Mal gemacht habe sie am 20.12.2004 erneut starte bekomme ich alle Datensätze die sich in der zeit geändert haben.

          Wenn ich sie aber am gleichen Tag erneut starte dürfte ich keinen zurückbekommen auch nicht die die am selben Tag geändert wurden. (so würde ich das sehnen)

          Also 20.12.2004 > 20.12.2004 ist ja nicht größer sondern gleich. Ich würde sagen da müsste nix rauskommen aber ergibt mir alle Datensätze zurück die am 20.12.2004 geändert wurden.

          Denke ich irgendwie falsch!

          Gruß

          Corinna

  2. hallo Corinna (aka C.A, du wirst ja auch immer fauler *g)

    P.S . hoffentlich habe ich mich zu besch… ausgedrückt

    um ehrlich zu sein... koennte das durchaus ein grund dafuer, dass ich nur bhf verstanden habe... ;-)

    prost
    seth

    1. Ist es so schlimm??

      hallo Corinna (aka C.A, du wirst ja auch immer fauler *g)

      Man wir halt alt und 21 ist schon ein alter das kritisch ist. Also alles was geht kurz halten ;-)

      um ehrlich zu sein... koennte das durchaus ein grund dafuer, dass ich nur bhf verstanden habe... ;-)

      Es ist ganz einfach.

      Ich habe eine Abfrage wo ich einen Datums vergleich anstelle.

      Also z.B.

      SELECT *
      FROM VIEW_EXCHANGE WHERE (FADeaktiv = 'FF')
      AND FDatumEdit > '&s(0)&'
      OR ADatumEdit > '&s(0)&'
      OR MDatumEdit > '&s(0)&'
      OR FDatumNeu > '&s(0)&'
      OR ADatumNeu > '&s(0)&'

      Was mir aufgefallen ist das die Uhrzeit eine rolle spielen kann weil in den Spalten kommt Uhrzeit und das Datum vor

      Also z.B. 20.12.2004 08:12:12 > 20.12.2004 (und weil ich die Uhrzeit nicht habe setzt er sie vielleicht für sich auf 0. kann doch sein, oder?

      Deswegen ist es nicht gleich oder gib es noch irgendeinen anderen weg?

      Bis denn…

      Corinna

      Ps. habe ich mich jetzt immer noch besch... ausgedrückt?

      1. gudn tach Corinna!

        Ist es so schlimm??

        ja, schon, denn ich habe immer noch nicht so ganz verstanden, um was es ueberhaupt geht. hilfreich waere z.b. schon, wenn du ein paar kommas mehr setzen wuerdest, damit man deine saetze nicht mehrmals "parsen" muss. ;-)
        aber ich rate jetzt, nachdem ich https://forum.selfhtml.org/?t=97050&m=590719 gelesen habe, trotzdem mal:

        SELECT *
        FROM VIEW_EXCHANGE WHERE (FADeaktiv = 'FF')
        AND FDatumEdit > '&s(0)&'
        OR ADatumEdit > '&s(0)&'
        OR MDatumEdit > '&s(0)&'
        OR FDatumNeu > '&s(0)&'
        OR ADatumNeu > '&s(0)&'

        meinst du das wirklich so?

        das ist naemlich das gleiche wie:
        SELECT *
        FROM VIEW_EXCHANGE WHERE
        (FADeaktiv = 'FF' AND FDatumEdit > '&s(0)&')
        OR ADatumEdit > '&s(0)&'
        OR MDatumEdit > '&s(0)&'
        OR FDatumNeu > '&s(0)&'
        OR ADatumNeu > '&s(0)&'

        da AND starker bindet als OR (http://dev.mysql.com/doc/mysql/en/Operator_Precedence.html).

        vielleicht meinst du eher sowas:

        SELECT *
        FROM VIEW_EXCHANGE WHERE FADeaktiv = 'FF'
        AND
        (FDatumEdit > '&s(0)&'
        OR ADatumEdit > '&s(0)&'
        OR MDatumEdit > '&s(0)&'
        OR FDatumNeu > '&s(0)&'
        OR ADatumNeu > '&s(0)&')

        prost
        seth

        1. ja, schon, denn ich habe immer noch nicht so ganz verstanden, um was es ueberhaupt geht. hilfreich waere z.b. schon, wenn du ein paar kommas mehr setzen wuerdest, damit man deine saetze nicht mehrmals "parsen" muss. ;-)

          ich hab’s raus bekommen es lag an der Uhrzeit die ich nicht beachtet habe.

          ich versuche mich mal ordentlich auszudrücken.

          20.12.2004 08:12:12 ist größer als der 20.12.2004 deswegen haben ich alle Datensätze bekommen die ich am selben Tag abfrage.

          wenn es nämlich so wäre

          20.12.2004 > 20.12.2004 würde nix raus kommen weil es ja gleich ist und nicht größer.

          Gruß

          Corinna