Kurze Abfrage

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • Kurze Abfrage

    Hallo Leute!
    Habe 2 Tabellen:
    1. Laufende Aufträge "AuftragLfd"
    Spalten: Lfd

    2. Auftragsdetails "Auftrag"
    Spalten : Lfd, Auftragsnr, ArtikelID, Menge, Erledigt

    Die "Auftrag"-Tabelle ist mit der "AuftragLfd"-Tabelle durch die Felder "Auftragsnr" und "Lfd" verbunden.

    Es gibt Aufträge wo "Erledigt" komplett mit "Y" oder "N" belegt ist, aber auch Aufträge wo nur paar Positionen mit "Y" markiert sind und die anderen mit "N".

    Jetzt möchte ich mir 3 Zahlen anzeigen lassen:
    1. Anzahl aller Aufträge
    2. Anzahl der Aufträge die komplett mit "Y" markiert sind
    3. Anzahl der Aufträge die komplett mit "N" markiert sind

    Alle Aufträge frage ich mit "SELECT count(Lfd) FROM auftraglfd" ab, Probleme kriege ich aber mit den Aufträgen wo manche Positionen mit "Y" und manche mit "N" markiert sind.

    Beispiel:

    Auftrag1 -Komplett "Y"
    Auftrag2-Teilweise "Y" und "N"
    Auftrag3 -Komplett "N"

    Es müsste so aussehen: Gesamt:3 Komplett:1 Nicht erledigt:2 (Auftrag der teilweise erledigt ist, ist im ganzen noch nicht komplett).

    Mit Joins bekomme ich aber sowas raus:
    Gesamt:3 Komplett:2 Nicht erledigt:2 denn Auftragsnr2 zählt zu beiden.


    Habe ess mit left join versucht.
    Gruß
    cugar
    Zuletzt geändert von cugar; 15.06.2004, 16:21.

  • #2
    Hallo cugar

    Sooo kurz geht's nicht, man muss "Erledigt"
    pro Auftrag bearbeiten und dann alles summieren.

    Das geht in einem SQL nicht, also Umweg über
    temporäre Tabelle, erst 'mal pro Auftrag: create temporary table

    select
    Auftragsnr,
    if ((max(Erledigt)=min(Erledigt) and (Erledigt="Y")) , 1,0) as Erledigt,
    if ((max(Erledigt)=min(Erledigt) and (Erledigt="N")) , 1,0) as NichtErledigt,
    if ( max(Erledigt)<>min(Erledigt) , 1,0) as ZumTeilErledigt
    from TMP
    group by Auftragsnr

    Die SUMs über alles dann halt im nächsten Query: SUM(Erledigt)...

    Kommentar


    • #3
      Danke, werde ich gleich versuchen. Dachte man kann es mit Joins etwaseleganter lösen.

      Viele Grüsse

      Kommentar


      • #4
        Mit JOINS glaub' ich nicht.
        Du hast ja alles in Auftragsdetails was Du brauchst.

        Aber wahrscheinlich geht's noch mit Subselects (für die 2. Gruppierung),
        die sind aber erst ab MySQL 4 verfügbar und in der Regel langsam.
        Hier wohl auch.
        Dann quält sich der Server nämlich durch ein GROUP BY pro Auftragsnr.

        Kommentar

        Lädt...
        X