Seite 1 von 1

[gelöst]Join and SUM

Verfasst: Sa, 07.09.2013 23:29
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) 12054 mal betrachtet
mit diesem Join schrumpfen die Tabellen auf das wesentliche.
sql.jpg
sql.jpg (26.74 KiB) 12054 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) 12054 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

Re: Join and SUM

Verfasst: So, 08.09.2013 00:09
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

Re: Join and SUM

Verfasst: So, 08.09.2013 00:21
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

Re: Join and SUM

Verfasst: So, 08.09.2013 00:42
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

Re: Join and SUM

Verfasst: So, 08.09.2013 00:53
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

Re: Join and SUM

Verfasst: So, 08.09.2013 00:54
von F3K Total
Muss sie ja nicht, schau dir die drei Abfragen in der Datei an, dann wirds verständlich.
Gruß R

Re: Join and SUM

Verfasst: So, 08.09.2013 01:09
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

Re: [gelöst]Join and SUM

Verfasst: So, 08.09.2013 01:22
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

Re: [gelöst]Join and SUM

Verfasst: So, 08.09.2013 11:29
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

Re: [gelöst]Join and SUM

Verfasst: So, 08.09.2013 11:47
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

Re: [gelöst]Join and SUM

Verfasst: So, 08.09.2013 13:07
von marc 70
danke, für die Erklärung.

Hab übrigens deine zweite Version genommen. :D

gruß marc