Announcement

Collapse
No announcement yet.

subtrahieren Kilometerstände aus Tabelle mit PHP

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

  • subtrahieren Kilometerstände aus Tabelle mit PHP

    Hallo,

    folgendes Problem:
    ich habe eine Tabelle (mysql)
    T_Fuhrpark_KM mit den Feldern Kennzeichen, Monat,KM_stand.
    ich möchte nun die Differenz der Kilometerstände je Monat berechnen.
    Wenn ich die Monate in Tabellen aufteile, sieht die Ausgabetabelle so aus:
    Kennzeichen Monat KM_Stand Monat_02 KM_Stand_02 gef. KM
    M-XX 5000 200801 19145 200802 20990 1845

    Da ich die Daten jedoch nur in einer Tabelle führen möchte, fehlt mir hier eine Lösung.

    Gruss
    Norbert

  • #2
    Hallo,

    Das solltest du dann eher mit SQL lösen:
    [highlight=sql]
    select Kennzeichen, Monat, min(KM_stand) Anfang_KM, max(KM_stand) Ende_KM,
    max(KM_stand) - min(KM_stand) Gefahrene_KM
    from T_Fuhrpark_KM
    group by Kennzeichen, Monat
    [/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


    • #3
      subtrahieren Kilometerstände aus Tabelle mit PHP

      Hallo Falk,

      dein Code:
      1.
      SELECT Kennzeichen, Monat, min(KM_stand) Anfang_KM, max(KM_stand) Ende_KM,
      2.
      max(KM_stand) - min(KM_stand) Gefahrene_KM
      3.
      FROM T_Fuhrpark_KM
      4.
      GROUP BY Kennzeichen, Monat

      subtrahiert nicht den KM_Stand in Abhängigkeit vom Monat und führt deshalb zum Ergebnis 0. Es sollte jedoch der KM_Stand von Monat2-Monat1, der KM_Stand von Monat3-Monat2 usw. bis Monat12-Monat11 berechnet werden. Die Lösung ist also nicht ganz so einfach.

      Gruss
      Norbert

      Comment


      • #4
        Hallo Norbert,

        du hast Recht, ich bin davon ausgegangen das es für jeden Monat mindestens zwei KM-Stände gibt.

        Evtl. müßte es dann so gehen:
        [highlight=sql]
        SELECT a.Kennzeichen, a.Monat, max(b.KM_stand) Anfang_KM, max(a.KM_stand) Ende_KM,
        max(a.KM_stand) - min(b.KM_stand) Gefahrene_KM
        FROM T_Fuhrpark_KM a
        INNER JOIN T_Fuhrpark_KM b
        ON b.Monat < a. Monat AND b.Kennzeichen = a.Kennzeichen
        GROUP BY a.Kennzeichen, a.Monat
        [/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
          subtrahieren Kilometerstände aus Tabelle

          Hallo Norbert,

          du hast Recht, ich bin davon ausgegangen das es für jeden Monat mindestens zwei KM-Stände gibt.

          Evtl. müßte es dann so gehen:
          [highlight=sql]
          SELECT a.Kennzeichen, a.Monat, max(b.KM_stand) Anfang_KM, max(a.KM_stand) Ende_KM,
          max(a.KM_stand) - min(b.KM_stand) Gefahrene_KM
          FROM T_Fuhrpark_KM a
          INNER JOIN T_Fuhrpark_KM b
          ON b.Monat < a. Monat AND b.Kennzeichen = a.Kennzeichen
          GROUP BY a.Kennzeichen, a.Monat
          [/highlight]

          Gruß Falk


          Hallo Falk,
          die Abfrage funktioniert, nur gerechnet wird immer vom min KM_Stand zum max KM_Stand. Wenn ich jedoch "ON b.Monat > a. Monat" so schreibe, rechnet er zwischen den Monaten korrekt, jedoch mit negativem Vorzeichen. Habe rumprobiert wie ich das ändern kann, jedoch bisher kein Erfolg.

          Gruß
          Norbert

          Comment


          • #6
            subtrahieren Kilometerstände aus Tabelle

            Hallo Falk,
            so funktioniert es:

            SELECT a.Kennzeichen , a.Monat , max(b.KM_Stand) KM_Stand , max(a.KM_Stand) Ende_KM , max(a.KM_Stand)-max(b.KM_Stand) gef_KM
            From T_Fuhrpark_KM a inner join T_Fuhrpark_KM b on b.Monat < a.Monat AND b.Kennzeichen = a.Kennzeichen
            group by`Kennzeichen`, `Monat`

            Danke für deine Hilfe. Ohne Dich wäre ich nicht vorangekommen.
            Jetzt muss ich nur noch eine Verküpfung auf die T_Fahrzeugbestand mit einem left join machen, damit alle Fahrzeuge angezeigt werden.

            Gruss
            Norbert

            Comment


            • #7
              Hallo Norbert,

              ja es muß für beide Werte MAX() verwendet werden. Für die Einzelfelder (Anfang_KM und Ende_KM) hatte ich das auch nochmal geändert, aber offensichtlich für die Subtraktion "vergessen".

              Aber du sollst ja auch ein bißchen mitdenken

              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


              • #8
                subtrahieren Kilometerstände aus Tabelle mit PHP

                Hallo Norbert,

                ja es muß für beide Werte MAX() verwendet werden. Für die Einzelfelder (Anfang_KM und Ende_KM) hatte ich das auch nochmal geändert, aber offensichtlich für die Subtraktion "vergessen".

                Aber du sollst ja auch ein bißchen mitdenken

                Gruß Falk

                Hallo Falk,
                ich habe mich bemüht mitzudenken. Bin jedoch auf dem Gebiet
                noch nicht so erfahren.

                Gruss
                Norbert

                Comment


                • #9
                  Das war auch eher ironisch und nicht wirklich ernst gemeint - deshalb auch der dahinter.

                  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