Ausgaben von 2 Tabellen nebeneinander gruppieren

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

  • Ausgaben von 2 Tabellen nebeneinander gruppieren

    Hallo,

    ich habe 2 Tabellen mit gleichem Aufbau.
    Die erste Tabelle enthält Werte aus 2006.
    Die zweite Tabelle enthält Werte aus 2007.

    Ich möchte nun die Ergebnisse aus beiden Tabellen
    nebeneinander stehen haben. Die Einzelabfragen lauten:


    Abfrage 1 für 2007:
    SELECT Kundennr, SUM(Verkaufspreis) AS Umsatz07, SUM(Menge) AS Stueckzahl07
    FROM vk2007
    WHERE
    (Bewegungsart = 'HK' OR Bewegungsart = 'TK')
    AND
    (Rabattgruppe = 'ZZ' OR Rabattgruppe = 'ZS' OR Rabattgruppe = 'ZW') GROUP BY Kundennr


    Abfrage 2 für 2006:
    SELECT Kundennr, SUM(Verkaufspreis) AS Umsatz06, SUM(Menge) AS Stueckzahl06
    FROM vk2006
    WHERE
    (Bewegungsart = 'HK' OR Bewegungsart = 'TK')
    AND
    (Rabattgruppe = 'ZZ' OR Rabattgruppe = 'ZS' OR Rabattgruppe = 'ZW') GROUP BY Kundennr

    Die Einzelabfragen funktionieren. Aber ich finde keine Lösung diese beiden Abfragen
    zusammenzufügen, damit die Ausgabe wie folgt aussieht:

    Kundennr | Umsatz07 | Stueckzahl07 | Umsatz06 | Stueckzahl06
    2900 100.07 1.00 90.05 1.00
    usw.

    Für Tipps wäre ich sehr dankbar.

  • #2
    Das ist auch schäbig, weil die Daten über zwei Tabellen aufgeteilt sind...
    Mehr Sinn würde es machen eine Tabelle für alles zu nehmen und eine neue "Jahr"-Spalte mitzuführen.

    Ansonsten irgendwie mit UNION oder so, aber die Geschwindigkeit ist mäßig und die Queries hässlich...

    Ansonsten kannst du auch ein ORDER BY kundenummer ASC machen und dann bei den zwei einzelnen Queries bleiben und über PHP die Ausgabe regeln. Da du weißt, dass die ID entweder in beiden Datensätzen vorhanden ist, oder aufsteigend ist, kannst du die beiden Result-Sets durch gehen und entsprechend ausgeben, oder sagen, dass keine Daten vorhanden sind.

    Ein netter Guide zum übersichtlichen Schreiben von PHP/MySQL-Code!

    bei Klammersetzung bevorzuge ich jedoch die JavaCoding-Standards
    Wie man Fragen richtig stellt

    Kommentar


    • #3
      Ist doch kein Problem: ein einfacher Join über die Kundennummer:
      Code:
      SELECT 
      	v7.kundennr, 
      	SUM(v7.verkaufspreis) AS Umsatz07, 
      	SUM(v7.menge) AS Stueckzahl07,
      	SUM(v6.verkaufspreis) AS Umsatz06, 
      	SUM(v6.menge) AS Stueckzahl06
      FROM 
      	vk2007 v7
      LEFT JOIN
      	vk2006 v6 USING(kundennr)
      WHERE
      	v7.bewegungsart IN('HK', 'TK')
      AND
      	v7.rabattgruppe IN( 'ZZ', 'ZS', 'ZW') 
      GROUP BY 
      	v7.kundennr
      Gruss
      H2O

      Kommentar


      • #4
        Hm... ne
        Man müsste einen FULL OUTER JOIN benutzen, aber den bietet MySQL afaik nicht an~

        Bei deinem Query können Einträge fehlen, die in 2006 da sind, aber nicht in 2007 ... oder mach ich die Sache gerade komplizierter als sie ist? Oo

        Ein netter Guide zum übersichtlichen Schreiben von PHP/MySQL-Code!

        bei Klammersetzung bevorzuge ich jedoch die JavaCoding-Standards
        Wie man Fragen richtig stellt

        Kommentar


        • #5
          Original geschrieben von ghostgambler
          Bei deinem Query können Einträge fehlen, die in 2006 da sind, aber nicht in 2007 ...
          Da hast du natürlich recht. Ich bin mal davon ausgegangen, dass diese Zahlen nicht interessieren. Falls sie trotzdem benötigt werden, müsste man das tatsächlich UNION verwenden, mit der gleichen Abfrage, aber einem RIGHT JOIN bzw. besser einem umgekehrten LEFT JOIN
          Gruss
          H2O

          Kommentar


          • #6
            Danke für Eure Antworten.

            AN H2O:
            Ich habe eben Deine SQL-Abfrage ausprobiert, aber leider werden
            falsche Werte zurückgeliefert.

            Mit UNION habe ich schon einige Abfrage getestet aber leider ohne
            Erfolg.

            Wie wird die UNION Abfrage in diesem Fall richtig geschrieben?

            Besten Dank schon mal.

            Kommentar


            • #7
              Original geschrieben von Galliano
              Ich habe eben Deine SQL-Abfrage ausprobiert, aber leider werden
              falsche Werte zurückgeliefert.
              Mit dieser (Nicht-)Aussage kann ich nichts anfangen. Ich wüsste nicht, was daran falsch sein könnte. Das die Resultate eventuell nicht vollständig sein können, haben wir vorher ja schon festgestellt.
              Gruss
              H2O

              Kommentar


              • #8
                Mach es am besten einfach per PHP...
                Oder krempel die Struktur um~

                Ein netter Guide zum übersichtlichen Schreiben von PHP/MySQL-Code!

                bei Klammersetzung bevorzuge ich jedoch die JavaCoding-Standards
                Wie man Fragen richtig stellt

                Kommentar

                Lädt...
                X