Information ausblenden
Willkommen im Forum für alle Datenbanken! Registriere Dich kostenlos und diskutiere über DBs wie Mysql, MariaDB, Oracle, Sql-Server, Postgres, Access uvm

Problem bei Abfrage

Dieses Thema im Forum "MySQL und MariaDB" wurde erstellt von Michi_R, 22 Juli 2013.

  1. Michi_R

    Michi_R Fleissiger Benutzer

    Hallo Leute,

    ich habe bereits ein Abfrageergebnis, das so aussieht wie in angefügter Excel Tabelle.
    Es geht darum, dass sich verschiedene Teile in unterschiedlichen Bearbeitungsschritten befinden können und ich wissen möchte, in welchem Bearbeitungsschritt zum Abfragezeitpunkt wie viele Teile hängen/gerade bearbeitet werden.

    Meine Abfrage (s. Excelsheet) liefert mir zu jedem Teil die ganze Historie, ich brauche aber eigtl nur den neuesten Schritt (in der Excel Tabelle grün markiert). Wenn ich den grün markierten Zeilen dann die "aktueller Bearbeitungsschritt" entnehme und die dann für jeden Bearbeitungsschritt zähle, erhalte ich mein gewünschtes Ergebnis.
    Im Excel Beispiel Fall also, dass sich je ein Teil in den Bearbeitungsschritten 10, 11, 13, 15, 21 befindet.

    Jedoch weiß ich nicht wie eine Abfrage zu meinem gewünschten Ergebnis lauten müsste.
    Im Moment bin ich noch an dem Punkt/bei der Lösung, die Abfrage so zu lassen, das Ergebnis in PHP in ein Array zu bringen und dort per Schleife alle (bis auf den jeweils neuesten Eintrag pro Teil) einträge zu eliminieren. Die, die übrig bleiben könnte ich dann zählen.

    Problem ist, dass die Ergebnistabelle in Wirklichkeit sehr groß ist und das wrsl ewig dauert bis die Schleifen über ca. 100000 Zeilen gelaufen ist und selektiert hat.

    Gesucht ist also ein Query auf eine Tabelle wie im Excelsheet, das mir mein beschriebenes Ergebnis liefert.

    Kann da wer helfen?
    Danke!
     
  2. Michi_R

    Michi_R Fleissiger Benutzer

    hier das File
    bsp.JPG
     
  3. akretschmer

    akretschmer Datenbank-Guru


    select seriennummer, max("Aktueller Bearbeitungsschritt"), max("nächster Bearbeitungsschritt") from deine_tabelle GROUP BY seriennummer;

    liefert Dir erst einmal, was wo ist. Das kann man dann nochmal auf die einzelnen Bearbeitungsschritte aggregieren. Bitte statt bunter Bilder lieber die korrekten Tabellen in Codeblöcken hier zeigen, vereinfacht die Sache ungemein.
     
    Michi_R gefällt das.
  4. Michi_R

    Michi_R Fleissiger Benutzer

    Super, danke. genau das habe ich gesucht.
    Mein Query sieht nun so aus:

    Select Seriennummer, MAX(aktueller_bearbeitungsschritt) as current_step from part_history
    group by Seriennummer

    Jetzt würde ich gerne mal nur die haben, die beim aktuellen Bearbeitungsschritt "10" haben. Habe den Query so geändert:

    Select Seriennummer, MAX(aktueller_bearbeitungsschritt) as current_step from part_history
    where current_step='10'
    group by Seriennummer

    Hier bekomme ich aber die Fehlermeldung "Invalid column name 'current_step'

    Weiß du vllt. woran das liegt?
     
  5. akretschmer

    akretschmer Datenbank-Guru


    Du suchst HAVING.
     
    Michi_R gefällt das.
  6. akretschmer

    akretschmer Datenbank-Guru

    Außerdem kannst Du im WHERE nicht auf Aliase aus der select-Liste zugreifen.
     
    Michi_R gefällt das.
  7. Michi_R

    Michi_R Fleissiger Benutzer

    Genau! Jetzt passt es.
    Danke :)
     
Die Seite wird geladen...

Diese Seite empfehlen

  1. Diese Seite verwendet Cookies. Wenn du dich weiterhin auf dieser Seite aufhältst, akzeptierst du unseren Einsatz von Cookies.
    Information ausblenden