Hi!
Ich brauche mal eure Hilfe beim Erstellen eines SQL-Vergleiches.
Ich habe zwei Datenfelder auf zwei unterschiedlichen Tabellen (Tab_1 und Tab_2), die ich in der Where-Klausel gegeneinander vergleichen soll. Beide Felder können die Werte von 0 bis 3 annehmen.
Ist Tab_1.Feld = 0, kann der Datensatz ignoriert werden, also:
... where Tab\_1.Feld \> 0
Ist Tab_2.Feld = 0, dann muss der Datensatz immer gelesen werden, also:
... and Tab\_2.Feld = 0
Außerdem gelten folgenden Konstellationen:
Wenn Tab_1.Feld = 1
und Tab_2.Feld = 1 --> Datensatz ignorieren
Wenn Tab_1.Feld = 1
und Tab_2.Feld = 2 --> Datensatz lesen
Wenn Tab_1.Feld = 1
und Tab_2.Feld = 3 --> Datensatz ignorieren
Wenn Tab_1.Feld = 2
und Tab_2.Feld = 1 --> Datensatz lesen
Wenn Tab_1.Feld = 2
und Tab_2.Feld = 2 --> Datensatz ignorieren
Wenn Tab_1.Feld = 2
und Tab_2.Feld = 3 --> Datensatz ignorieren
Wenn Tab_1.Feld = 3
und Tab_2.Feld = 1 --> Datensatz lesen
Wenn Tab_1.Feld = 3
und Tab_2.Feld = 2 --> Datensatz lesen
Wenn Tab_1.Feld = 3
und Tab_2.Feld = 3 --> Datensatz ignorieren
Dies brachte mich auf die Idee eines Bitvergleiches. Im den Fällen 1 bis 3 wird als das 1-Bit verglichen, in den Fällen 4 bis 6 das 2-Bit, ind den Fällen 7 bis 9 das 1-Bit und das 2-Bit.
Wie aber bekomme ich das in SQL hin, vor allem so allgemein, dass die o.g. Entscheidungstabelle korrekt umgesetzt wird?
Das SQL müsste irgendwie dann in diese Richtung gehen:
... where Tab\_1.Feld \> 0
and
(Tab\_2.Feld = 0 or ...???)
Danke für jede Idee!
Grüße
Heinrich