[gelöst]Join and SUM

Programmierung unter AOO/LO (StarBasic, Python, Java, ...)

Moderator: Moderatoren

marc 70
**
Beiträge: 38
Registriert: Mo, 24.09.2012 23:00

[gelöst]Join and SUM

Beitrag von marc 70 »

nabend,

komme hier leider auf keinen grünen Zweig...
hab hier mal zwei Test-Tabellen gemacht als Beispiel.
tabelle.jpg
tabelle.jpg (39.68 KiB) 12061 mal betrachtet
mit diesem Join schrumpfen die Tabellen auf das wesentliche.
sql.jpg
sql.jpg (26.74 KiB) 12061 mal betrachtet
Jetzt zu meine Frage.
Wie bekomme ich ein SUM auf die Spalte Preis, damit ich solch ein Ergebnis hätte?
sql2.jpg
sql2.jpg (16.4 KiB) 12061 mal betrachtet
Summe1 ist der Gesamtpreis von Position1 sowie der Gesamtpreis von Position2
Summe2 Stck*Gesamtpreis von Position1 sowie Stck*Gesamtpreis von Position2

ginge so was zu machen?
Ich bekomme bei meinen versuchen entweder ein Fehler oder die Summe der ganzen Spalte Preis...

gruß marc
Zuletzt geändert von marc 70 am So, 08.09.2013 01:17, insgesamt 1-mal geändert.
AOO411m6(Build:9775) unter WIN7 64bit
F3K Total
********
Beiträge: 3724
Registriert: Mo, 28.02.2011 17:49

Re: Join and SUM

Beitrag von F3K Total »

Hallo Marc,
du bist im falschen Forum, OOo Base / SQL wäre richtig.
marc 70 hat geschrieben:ginge so was zu machen?
Sicher, aber es wird keiner Lust haben, deine Daten nachzutippen.
Wie wäre es, wenn Du deine Beispieldatei(en), statt der Bilder hochladen würdest?
Gruß R
marc 70
**
Beiträge: 38
Registriert: Mo, 24.09.2012 23:00

Re: Join and SUM

Beitrag von marc 70 »

Sorry, nach Basic und Java sollte es natürlich nicht hin.

AOO400m3(Build:9702)
HSQLDB
Wie wäre es, wenn Du deine Beispieldatei(en), statt der Bilder hochladen würdest?
Hast recht, macht Sinn:

Code: Alles auswählen

SELECT "Position", "Stck", "Ware", "Preis", "KundenID" 
FROM "Tabelle1" INNER JOIN "Tabelle2" ON "Tabelle1"."AuftragID" = "Tabelle2"."AuftragID" 
WHERE "Tabelle1"."AuftragID" = 200
Dateianhänge
test.odb
(4.64 KiB) 101-mal heruntergeladen
AOO411m6(Build:9775) unter WIN7 64bit
F3K Total
********
Beiträge: 3724
Registriert: Mo, 28.02.2011 17:49

Re: Join and SUM

Beitrag von F3K Total »

Hi,

Code: Alles auswählen

SELECT "Abfrage1"."Position", "Abfrage1"."Stck", "Abfrage1"."Ware", "Abfrage1"."Preis", "Abfrage1"."Stck_Preis", "Abfrage1"."KundenID", "Abfrage2"."Summe1", "Abfrage2"."Summe2" FROM ( SELECT "Tabelle1"."Position", "Tabelle1"."Stck", "Tabelle1"."Ware", "Tabelle1"."Preis", "Stck" * "Preis" AS "Stck_Preis", "Tabelle2"."KundenID" FROM "Tabelle1", "Tabelle2" WHERE "Tabelle1"."AuftragID" = "Tabelle2"."AuftragID" AND "Tabelle1"."AuftragID" = 200 ) "Abfrage1" JOIN ( SELECT "Position", SUM( "Preis" ) AS "Summe1", SUM( "Stck_Preis" ) AS "Summe2" FROM ( SELECT "Tabelle1"."Position", "Tabelle1"."Stck", "Tabelle1"."Ware", "Tabelle1"."Preis", "Stck" * "Preis" AS "Stck_Preis", "Tabelle2"."KundenID" FROM "Tabelle1", "Tabelle2" WHERE "Tabelle1"."AuftragID" = "Tabelle2"."AuftragID" AND "Tabelle1"."AuftragID" = 200 ) "Abfrage1" GROUP BY "Position" ) "Abfrage2" ON "Abfrage1"."Position" = "Abfrage2"."Position"
OK, das sieht übel aus, ist auch nur das Ergebnis rekusiven Einsetzens.
Hier die Datei:
Mit drei Abfragen gehts leicht.

Gruß R
Dateianhänge
test.odb
(4.71 KiB) 140-mal heruntergeladen
marc 70
**
Beiträge: 38
Registriert: Mo, 24.09.2012 23:00

Re: Join and SUM

Beitrag von marc 70 »

echt klasse....funktioniert :-D
Danke dir, für die Mühe die du dir gemacht hast.
Hätte nicht gedacht das die Abfrage so lang wird. :shock:

Gruß marc
AOO411m6(Build:9775) unter WIN7 64bit
F3K Total
********
Beiträge: 3724
Registriert: Mo, 28.02.2011 17:49

Re: Join and SUM

Beitrag von F3K Total »

Muss sie ja nicht, schau dir die drei Abfragen in der Datei an, dann wirds verständlich.
Gruß R
marc 70
**
Beiträge: 38
Registriert: Mo, 24.09.2012 23:00

Re: Join and SUM

Beitrag von marc 70 »

Code: Alles auswählen

SELECT "Position", "Stck", "Ware", "Preis", "Stck_Preis", "KundenID", "Summe1", "Summe2" FROM "Abfrage1" JOIN "Abfrage2" ON "Abfrage1"."Position" = "Abfrage2"."Position"
Das ist natürlich genial und deutlich übersichtlicher einzeln zu bauen und dann zusammen zusetzen.
Habe die Abfragen bis jetzt immer nur direkt in Basic geschrieben.

gruß marc
AOO411m6(Build:9775) unter WIN7 64bit
F3K Total
********
Beiträge: 3724
Registriert: Mo, 28.02.2011 17:49

Re: [gelöst]Join and SUM

Beitrag von F3K Total »

Hi,

Code: Alles auswählen

SELECT
     "AuftragID",
     "Position",
     "Stck",
     "Ware",
     "Preis",
     "KundenID",
     "Z"."Summe1",
     "Z"."Summe2"
FROM "Tabelle1" AS "X"
JOIN "Tabelle2" AS "Y"
      ON "X"."AuftragID" = "Y"."AuftragID"
JOIN
     (SELECT
     "AuftragID",
     "Position",
     SUM( "Preis" ) AS "Summe1",
     SUM( "Stck" * "Preis" ) AS "Summe2"
     FROM "Tabelle1"
     GROUP BY
     "Position",
     "AuftragID")
AS "Z"
     ON  "X"."AuftragID" = "Z"."AuftragID"
     AND "X"."Position" = "Z"."Position"
     AND "X"."AuftragID" = 200
Das gefällt mir am besten.

Gruß R
marc 70
**
Beiträge: 38
Registriert: Mo, 24.09.2012 23:00

Re: [gelöst]Join and SUM

Beitrag von marc 70 »

Hi F3K Total,

Danke :D
hat es denn ein Vorteil wenn man mit weniger SELECT´s auskommt? (bei kleinen Tabellen)

gruß marc
AOO411m6(Build:9775) unter WIN7 64bit
F3K Total
********
Beiträge: 3724
Registriert: Mo, 28.02.2011 17:49

Re: [gelöst]Join and SUM

Beitrag von F3K Total »

Moin,
marc 70 hat geschrieben:.. hat es denn ein Vorteil wenn man mit weniger SELECT´s auskommt? (bei kleinen Tabellen)
Bei kleinen Tabellen wirst Du den Unterschied vermutlich nicht merken, bei größeren Datenmengen wirkt es sich natürlich auf die Geschwindigkeit aus, wenn man unnötig viele Datensätze abfragt.
Ob es besser ist, die Abfragen zu trennen oder in einer Abfrage zusammenzufassen, kann ich nicht sagen.
Am schnellsten ist auf jeden Fall, wenn du die Daten nur ansehen und nicht verändern möchtest, statt der Abfragen Ansichten (Views, Bereich Tabellen) zu verwenden, denn die werden direkt an die Datenbank gesendet, ohne den Umweg über den BASE-Parser zu nehmen.
Ansichten können keine Parameter verarbeiten.
Du kannst deine Abfragen mit einem rechten Mausklick "Als Ansicht erstellen" in Ansichten überführen.
Ansichten können aber auch genauso mit dem GUI erstellt werden wie Abfragen.
Gruß R
marc 70
**
Beiträge: 38
Registriert: Mo, 24.09.2012 23:00

Re: [gelöst]Join and SUM

Beitrag von marc 70 »

danke, für die Erklärung.

Hab übrigens deine zweite Version genommen. :D

gruß marc
AOO411m6(Build:9775) unter WIN7 64bit
Antworten