Announcement

Collapse
No announcement yet.

Bedingung über mehrere Zeilen

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

  • Bedingung über mehrere Zeilen

    Hallo,

    bin neu hier im Forum und hoffe Ihr könnt mir weiterhelfen.

    Ich habe folgende Beispieltabelle:

    IDAuftrag Status
    111 Beliefert
    222 Beliefert
    222 Angenommen
    111 Angenommen
    111 Nicht bezahlt
    222 Bezahlt

    Ich möchte jetzt einfach alle Aufträge in der EIN Auftrag alle Bedingungen (Beliefert/Angenommen/Bezahlt) erfüllt.
    Der Auftrag mit der ID 222 würde hier alle Bedingungen erfüllen.

    Vielleicht habe ich eine Hirnblockade und es ist bestimmt ganz simple, aber ich probier schon eine ganze weile rum.
    Danke für hilfreiche Antworten.

  • #2
    [highlight=sql]
    select
    t1.IDAufttrag
    from
    Tabelle t1
    where
    t1.Status = 'Beliefert' and
    exists ( select t2.IDAuftrag from Tabelle where t2.IDAuftrag and t2.Status =
    'Angenommen') and
    exists ( select t3.IDAuftrag from Tabelle where t3.IDAuftrag = t3.Status =
    'Bezahlt');
    [/highlight]

    oder

    [highlight=sql]
    select
    t1.IDAuftrag
    from
    Tabelle t1
    join Tabelle t2 on t2.IDAuftrag = t1.IDAuftrag
    join Tabelle t3 on t3.IDAuftrag = t1.IDAuftrag
    where
    t1.status = 'Angenommen' and
    t2.status = 'Beliefert' and
    t3.Status = 'Bezahlt';
    [/highlight]

    Btw. Kann es den überhaupt Sein, das nicht bestellte Ware geliefert wurde bzw. das nicht Gelieferte Ware bezahlt wurde?

    Comment


    • #3
      Hallo Markus,

      danke für die zügige Antwort.

      Wie gesagt handelt es sich hierbei nur um eine Beispieltabelle und dient nur zu Veranschaulichung. Ich arbeite natürlich mit anderen Tabellen.

      Werde das alsbald testen.

      Nochmals dicken Dank!

      Comment


      • #4
        ...oder

        [highlight=sql]
        SELECT t1.IDAufttrag
        FROM
        Tabelle t1
        where t1.STATUS in ('Beliefert', 'Angenommen', 'Bezahlt')
        group by t1.IDAufttrag
        having count(distinct t1.STATUS) = 3
        [/highlight]

        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


        • #5
          Hallo Falk,

          wie verhält es sich wenn ich noch eine andere Bedingung aufnehmen will ohne dass die anderen 3 zusammenhängend erfüllt sein müssen? Dann denke ich funktioniert die Having-Klausel nicht mehr oder?

          Z.B. wenn ich zusätzlich einen Status "Erledigt" habe unhabängig davon ob jetzt die anderen Bedingungen erfüllt sind, soll dieser in meiner Tabelle miterscheinen. Wie muss ich dann meinen Select umbasteln?

          Comment


          • #6
            Hallo,

            nein, dann funktioniert es mit HAVING nicht mehr. Da musst du dann auf eine von Markus Lösungen zurückgreifen und die zusätzliche Bedingung in einem OR unterbringen.

            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