Abfrage über 3 Tabellen mit Berehcnung

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

  • Abfrage über 3 Tabellen mit Berehcnung

    Hallo liebe Community,

    folgende problemstellung, ich habe 3 Tabellen:

    Einkauf
    Rechnungsnr
    (...)
    Datum

    ER_Lebensmittel
    EKID
    Rechnungsnr
    (...)
    Kaufmenge

    Verw_Lebensmittel
    VID
    EKID
    (...)
    Verbrauchsmenge

    In der Tabelle Einkauf, wird wie der Name schon sagt der Einkauf dokumentiert, Lieferantenangaben, Datum etc. In der Tabelle EK_Lebensmittel werden die dazugehörigen Lebensmittel dokumentiert die eingekauft werden, samt Kaufmenge. In der letzten Tabelle Verw_Lebensmittel wird schließlich der Verbrauch dokumentiert.

    Meine Abfrage soll nun alle Lebensmittel, die vor einem bestimmten Datum liegen, sowie alle Lebensmittel die nicht aufgebrauch sind ausgeben.

    Einer Meiner Ansätz: (hatte es auch mit MINUS und OUTER JOIN versucht)
    PHP-Code:
    SELECT EK_Lebensmittel.*, SUM(Verw_Lebensmittel.Verbrauchsmenge) AS Verbrauch
    FROM EK_Lebensmittel
    INNER JOIN Einkauf ON EK_Lebensmittel
    .Rechnungsnr Einkauf.Rechnungsnr
    INNER JOIN Verw_Lebensmittel ON EK_Lebensmittel
    .EKID Verw_Lebensmittel.EKID
    WHERE Einkauf
    .Datum <= '$datum' AND EK_Lebensmittel.Kaufmenge Verbrauch
    ORDER BY lid DESC LIMIT 
    '$i',
    Wenn ich nur die Datensätze vor einem Datum ausgeben lasse, funktioniert ist, jedoch wenn ich den Verbrauch mit einbeziehen will nicht mehr Vielleicht bin ich schon Betriebsblind und erkenn den Fehler nicht, der am ende wieder so leicht ist

    über den richtigen Ansatz wäre ich sehr dankbar!

  • #2
    was ist verbrauch? ein externer Wert, eine Spalte von einer Tabelle? und bei Verwendung von Aggregatfunktionen:

    - select * ist nicht zulässig
    - ohne group by ist auch Käse

    es mag ja sein, dass MySQL nicht an standard hält und alles zulässt, aber wenn man sich an standard hält dann hat man auch keine Überraschungen zu erwarten.

    Kommentar


    • #3
      Bei Verbrauch handelt es sich um die errechnete Summe (SUM(...) AS Verbrauch) ...

      vielleicht noch sehr wichtig, die Tabelle Verw_Lebensmittel muss keine Werte für den Datensatz aufweisen!
      Zuletzt geändert von hilfebedürftig; 20.04.2007, 10:54.

      Kommentar


      • #4
        Original geschrieben von hilfebedürftig
        Bei Verbrauch handelt es sich um die errechnete Summe (SUM(...) AS Verbrauch) ...
        in where-clause darf keine alias verwendet werden

        Kommentar


        • #5
          Original geschrieben von asp2php
          in where-clause darf keine alias verwendet werden
          du hast natürlich recht! Danke für den Denkansatz mit GROUP BY, hab es mit einen LEFT JOIN auf Verw_Lebensmittel und der HAVING-Klausel in Verbindung mit COALESCE gelöst!

          Besten Dank!

          Kommentar


          • #6
            dann poste die Lösung für Hilfesuchenden

            Kommentar

            Lädt...
            X