ID zum jeweilgen Durchschnittswert

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

  • ID zum jeweilgen Durchschnittswert

    Nachdem ich ja nun erfolgreich meine Durchschnittswerte kriege wüßte ich gern ob es IRGENDWIE möglich ist die ID des jeweiligen Auftrags/Errand zu kriegen der diesen Wert hat.

    PHP-Code:
    CREATE VIEW employee_statistics AS
    SELECT concat(Employee.id) AS id
            
    Employee.id AS employee_id
            
    Employee.vorname
            
    Employee.name
            
    Errand.zeitdifferenz
            
    AVG(Errand.zeitdifferenz) AS zeitdurchschnitt,
            
    AVG(Errand.ausgangsdifferenz) AS ausgangsdurchschnitt,
            
    MIN(Errand.zeitdifferenz) AS minzeitdifferenz,
            
    MAX(Errand.zeitdifferenz) AS maxzeitdifferenz,
            
    MIN(Errand.ausgangsdifferenz) AS minausgangszeit,
            
    MAX(Errand.ausgangsdifferenz) AS maxausgangszeit,
            
    count(Errand.id) AS auftragssumme
    FROM 
    `employees` AS `Employee
    LEFT JOIN `errands` AS `ErrandON (`Errand`.`monteur_id` = `Employee`.`id`)
    GROUP BY Employee.id 
    Ich hab mich u.A. erfolglos an dieser Methode versucht, so fern das überhaupt damit geht...

    http://dev.mysql.com/doc/refman/5.0/...group-row.html

    Ideen?


    Edit:
    PHP-Code:
    CREATE VIEW employee_statistics AS
    SELECT concat(Employee.id) AS id
            
    Employee.id AS employee_id
            
    Employee.vorname
            
    Employee.name
            
    Errand.zeitdifferenz
            
    AVG(Errand.zeitdifferenz) AS zeitdurchschnitt,
            
    AVG(Errand.ausgangsdifferenz) AS ausgangsdurchschnitt,
            
    MIN(Errand.zeitdifferenz) AS minzeitdifferenz,
            (
    SELECT id AS blah FROM errands WHERE zeitdifferenz minzeitdifferenz) AS test,
            
    MAX(Errand.zeitdifferenz) AS maxzeitdifferenz,
            
    MIN(Errand.ausgangsdifferenz) AS minausgangszeit,
            
    MAX(Errand.ausgangsdifferenz) AS maxausgangszeit,
            
    count(Errand.id) AS auftragssumme
    FROM 
    `employees` AS `Employee
    LEFT JOIN `errands` AS `ErrandON (`Errand`.`monteur_id` = `Employee`.`id`)
    GROUP BY Employee.id 
    Führt dazu:
    #1247 - Reference 'minzeitdifferenz' not supported (reference to group function)
    Zuletzt geändert von burzum; 26.09.2007, 17:25.

  • #2
    Evt. einfach ein subselect in die Where Bedingung einbauen..
    Beantworte nie Threads mit mehr als 15 followups...
    Real programmers confuse Halloween and Christmas because OCT 31 = DEC 25

    Kommentar


    • #3
      Das ist nicht möglich. Woher soll die DB wissen, welche Auftrags-ID zu diesem Angestellten gehört. Ich nehm ja an, dieser bearbeitet mehr als einen Auftrag. Deshalb ist schon Errand.zeitdifferenz ein Zufallswert. Und vorname und name sind nur deshalb korrekt, weil sie in einer 1:1 Beziehung zum Gruppierungskriterium stehen.
      Du hast Glück, mit MySQL zu arbeiten. Andere RDBMS (z.B. Oracle) erlauben in solchen Abfragen gar keine Attribute, die nicht in der GROUP BY-Klausel stehen
      Gruss
      H2O

      Kommentar

      Lädt...
      X