Andi: Abfrage mit verschiedenen Kriterien

Hallo,

mein Problem ist folgendes:

Per Webservice werden verschiedene Daten mit verschiedenen Kriterien abgefragt. Manche Bedingungen stehen dabei in einer separaten Tabelle.
Beim Webservice können dabei Bedingungen übergeben werden, welche folgendermaßen aussehen:

A;B|C   -> Bedeutet A && B || C
A;(B|C) -> Bedeutet A && (B || C)

Nun muss ich daraus eine Query basteln, was mir Probleme bereitet. Im obigen Fall wäre die Abfrage z.b.:

A;B|C   -> Bedeutet A && B || C
FROM tab1 WHERE id IN (SELECT id FROM tab2 WHERE feld = A OR feld = C) AND
                id IN (SELECT id FROM tab2 WHERE feld = B OR feld = C)

A;(B|C) -> Bedeutet A && (B || C)
FROM tab1 WHERE id IN (SELECT id FROM tab2 WHERE feld = A OR (feld = B OR feld = C))

Das sind jetzt nur einfache Beispiele d.h. es können auch kompliziertere Abfragen eingehene z.b. (A|B;(C|D)).

Hat jemand eine Idee oder Lösungsansatz, wie man solche Bedingungen in eine Abfrage bekommt?
Grüße
Andi

  1. Hallo,

    Nun muss ich daraus eine Query basteln, was mir Probleme bereitet. Im obigen Fall wäre die Abfrage z.b.:

    A;B|C   -> Bedeutet A && B || C
    FROM tab1 WHERE id IN (SELECT id FROM tab2 WHERE feld = A OR feld = C) AND
                    id IN (SELECT id FROM tab2 WHERE feld = B OR feld = C)

    Das sind jetzt nur einfache Beispiele d.h. es können auch kompliziertere Abfragen eingehene z.b. (A|B;(C|D)).

    Hat jemand eine Idee oder Lösungsansatz, wie man solche Bedingungen in eine Abfrage bekommt?

    einen simpler Join mit einer entsprechend aufbereiteten Join-Bedingung sollte es tun. Ich sehe keinen Grund Subselects zu verwenden.

    Lesetipps zu Joins:

    - Einführung in Joins
     - Fortgeschrittene Jointechniken

    Freundliche Grüße

    Vinzenz

    1. Hallo Vinzenz,

      einen simpler Join mit einer entsprechend aufbereiteten Join-Bedingung sollte es tun. Ich sehe keinen Grund Subselects zu verwenden.

      Joins sind hier das bessere Mittel. Damit ist es auch leichter die Bedingung in einen join zu bekommen.

      Freundliche Grüße
      Andi