Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi Kleines Problem bei einer SQL-Gruppierung (https://www.delphipraxis.net/79524-kleines-problem-bei-einer-sql-gruppierung.html)

sunnyandy 24. Okt 2006 10:22

Datenbank: mySQL • Version: 5 • Zugriff über: zeos

Kleines Problem bei einer SQL-Gruppierung
 
Hallo!

In der folgenden Anweisung möchte ich den Umsatz für einen Vertriebspartner ermitteln und gruppiere also zuerst nach "pr.vertrag_id", um die Gesamtsumme für einen Vertrag zu berechnen.
Anschließen werden die Aufträge noch nach Vertriebspartner_id gruppiert, um den Umsatz eines Vertriebspartners zu berechnen.
Mein Problem ist, dass es in den Joins zu einigen Vertriebspartnern keinen Auftrag gibt.
Und wenn ich nach den Aufträgen gruppiere, dann fallen nunmal die Vertriebspartner raus, denen kein Auftrag zugeordnet ist und schließlich erscheinen sie gar nicht.
Eine Lösung wäre ja, diese ganze Anweisung mit UNION mit einer zu verbinden, um die Vertriebspartner zu suchen, die gar keine Aufträge geschrieben haben und ich dort manuell einen Umsatz von 0 hinschreibe.

Aber geht es nicht auch noch einfacher?
Hoffe ihr könnt mir helfen :thumb:
Gruß, Andy

SQL-Code:
SELECT `vertriebspartner_id`, sum(`sonderpr`), sum(`summe`)
FROM(
SELECT vp.vertriebspartner_id, sum(bestellung.anzahl*bestellung.sonderprovision) `sonderpr`, pr.provisionierungssumme `summe`
FROM vertriebspartner vp
JOIN provisionen pr ON (pr.vertriebspartner_id = vp.vertriebspartner_id)
JOIN bestellte_artikel bestellung ON (bestellung.vertrag_id = pr.vertrag_id)
JOIN auftraege auf ON (auf.vertrag_id = pr.vertrag_id)
WHERE pr.vertriebspartner_id = pr.provision_von
GROUP BY pr.vertrag_id ) x
GROUP BY `vertriebspartner_id`

nahpets 24. Okt 2006 11:39

Re: Kleines Problem bei einer SQL-Gruppierung
 
Hallo,

schau mal unter http://www.little-idiot.de/mysql/mysql-118.html.
Eventuell hilft die hier Outer Joins weiter, dort ist ein Beispiel beschrieben, dass deinem Problem ähnelt.
Könnte das Problem nur mit Oracle-Datenbanken lösen, dort ist aber die Syntax doch ein bisserl anders.

Stephan

omata 24. Okt 2006 20:16

Re: Kleines Problem bei einer SQL-Gruppierung
 
Hallo sunnyandy,

schau dir mal LEFT-JOINs an...

SQL-Code:
SELECT vertriebspartner_id, SUM(sonderpr), SUM(summe)
FROM(SELECT vp.vertriebspartner_id,
            SUM(bestellung.anzahl * bestellung.sonderprovision) sonderpr,
            pr.provisionierungssumme summe
     FROM vertriebspartner vp
     INNER JOIN provisionen pr
       ON pr.vertriebspartner_id = vp.vertriebspartner_id
     INNER JOIN bestellte_artikel bestellung
       ON bestellung.vertrag_id = pr.vertrag_id
     LEFT JOIN auftraege auf
       ON auf.vertrag_id = pr.vertrag_id
     WHERE pr.vertriebspartner_id = pr.provision_von
     GROUP BY pr.vertrag_id) x
GROUP BY vertriebspartner_id
Gruss
Thorsten


Alle Zeitangaben in WEZ +1. Es ist jetzt 12:53 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz