Daten 3fach durch eine Spalte mit unterschiedlichen werten

Antwort erstellen


BBCode ist eingeschaltet
[img] ist ausgeschaltet
[url] ist eingeschaltet
Smileys sind ausgeschaltet

Die letzten Beiträge des Themas
   

Ansicht erweitern Die letzten Beiträge des Themas: Daten 3fach durch eine Spalte mit unterschiedlichen werten

Re: Daten 3fach durch eine Spalte mit unterschiedlichen wert

von F3K Total » Mi, 13.04.2011 22:01

Hallo DPunch,
Dankeschön, das sieht doch viel übersichtlicher aus als meine Variante.

Gruß R

Re: Daten 3fach durch eine Spalte mit unterschiedlichen wert

von DPunch » Mi, 13.04.2011 12:10

Aloha
F3K Total hat geschrieben:Eine zusätzliche Tabelle sehe ich nicht, habe lediglich die ganz oben angegebenen Tabellen verarbeitet.
Du hast Recht, mein Fehler - hatte nur einen kurzen Blick auf die odb geworfen und direkt wieder geschlossen, nachdem ich gesehen hatte, dass Du wieder mit Unmengen Views arbeiten willst.
Dachte, dabei auch eine zusätzliche Tabelle gesehen zu haben, nichts für ungut.
F3K Total hat geschrieben:Wenn es eine deutlich einfachere Lösung gibt, ohne die vielen "Einzelviews", kannst Du sie mal aufzeigen?
Siehe Anhang.
Und das ist die umständliche HSQL-Version (bzw. von der Syntax her SQL-"allgemeingültige" Version), per PostgreSQL und crosstab wäre das Ganze vermutlich nochmal deutlich simpler.
Ob Du mit Deinen X Views glücklich wirst, kannst alleine Du entscheiden, und da will ich Dir eigentlich nicht reinreden, aber Du solltest solche Lösungswege niemandem vorschlagen.
Dateianhänge
Order_item.odb
(4.76 KiB) 103-mal heruntergeladen

Re: Daten 3fach durch eine Spalte mit unterschiedlichen wert

von F3K Total » Mi, 13.04.2011 11:47

@DPunch
Ja, ich habe es schon wieder getan.
Eine zusätzliche Tabelle sehe ich nicht, habe lediglich die ganz oben angegebenen Tabellen verarbeitet.
Wenn es eine deutlich einfachere Lösung gibt, ohne die vielen "Einzelviews", kannst Du sie mal aufzeigen?
Natürlich bin ich an einer einfacheren "Holzhammermethode" sehr interessiert.

Gruß R

Re: Daten 3fach durch eine Spalte mit unterschiedlichen wert

von DPunch » Mi, 13.04.2011 09:50

Aloha
F3K Total hat geschrieben:ich hätte da eine noch "holzhammerigere" Version anzubieten
Du tust es ja schon wieder 8)

Diese Form der Darstellung kann man sowohl in HSQL als auch, deutlich weniger aufwändig, in PostgreSQL in einer einzigen Abfrage erzeugen, ohne reihenweise Views, ohne zusätzliche Tabelle und damit verbunden potenzielle Dateninkonsistenz, ohne eine dynamische Abfrage vorzugaukeln.
Du solltest wirklich von dieser Herangehensweise abrücken, es ist nur zu Deinem Besten. Zumindest aber solltest Du sie nicht anderen ans Herz legen.

Re: Daten 3fach durch eine Spalte mit unterschiedlichen wert

von F3K Total » Di, 12.04.2011 20:44

Hallo,
ich hätte da eine noch "holzhammerigere" Version anzubieten, die bis zu 10 unterschiedliche Prozentwerte, die frei eingegeben werden können, findet und dann nach Vorkommen zuordnet. Schau mal in die View "P99_alle".

Gruß R

Re: Daten 3fach durch eine Spalte mit unterschiedlichen wert

von MikeRo » Di, 12.04.2011 17:50

Vielen Dank, ich werde es mal versuchen.

Re: Daten 3fach durch eine Spalte mit unterschiedlichen wert

von DPunch » Di, 12.04.2011 17:27

Aloha

Wie schonmal erwähnt:
Mit 3 unterschiedlichen Prozenzwerten ist das per Holzhammer-Methode gar kein Problem, aber wenn Du unterschiedlichste Prozentwerte haben kannst, wird das nicht einfach so umsetzbar sein - das verlinkte "Crosstab" könnte Dir da behilflich sein, aber es ist zu lange her, dass ich mit PostgreSQL gearbeitet habe, als dass ich Dir da auf die Schnelle weiterhelfen könnte.

Die Darstellung Deiner 3 unterschiedlichen Werte per Holzhammer würde ungefähr so aussehen:

Code: Alles auswählen

SELECT DISTINCT
	"id" ,
	CASE "id" IN (SELECT "id" FROM "offer_discount_order_item" WHERE "percentage" = 15)
	WHEN TRUE THEN '15'
		ELSE ''
	END AS "Prozent 15",
	CASE "id" IN (SELECT "id" FROM "offer_discount_order_item" WHERE "percentage" = 30)
	WHEN TRUE THEN '30'
		ELSE ''
	END AS "Prozent 30",
	CASE "id" IN (SELECT "id" FROM "offer_discount_order_item" WHERE "percentage" = 62.1)
	WHEN TRUE THEN '62,1'
		ELSE ''
	END AS "Prozent 62,1"
FROM "offer_discount_order_item"
Ich kann nur wiederholen, dass ich von diesem Herangehen nichts halte, aber wenn es hilft...

Ich weiss nicht, was genau Du damit machst, aber wenn Du eh mit Makros arbeitest, lässt sich das alles deutlich besser dort darstellen, bzw möglicherweise brauchst Du diese Darstellung gar nicht.

Re: Daten 3fach durch eine Spalte mit unterschiedlichen wert

von MikeRo » Di, 12.04.2011 13:23

Hallo DPunch,

hier hast du mal die Übersicht über die Tabellen die Nötig sind und die Abfrage die ich mache.

Dabei sind in der Tabelle offer_order_item die Einzelnen Positionen der bestellung
In der Tabelle offer_discount_order_item sind die Einzelnen Rabatte die auf die Positionen zutreffen.
Und die Tabelle offer_discount_item ist nur eine Kontrolltabelle und dort sind auch nur die verschiedenen Rabattarten zu finden Und Ihre Hierarchie.

Ich hoffe die Beziehungen sind nun besser verständlich und ersichtlich.

Hier die Abfrage als Code

Code: Alles auswählen

SELECT "offer_order_item"."id", "offer_discount_order_item"."percentage" 

FROM "public"."offer_discount_order_item", "public"."offer_order_item", "public"."offer_discount_item" 

WHERE "offer_discount_order_item"."order_item" = "offer_order_item"."id" 
AND "offer_discount_order_item"."discount_item" = "offer_discount_item"."id" 
AND "offer_order_item"."offer" = "offer_discount_item"."offer" 
AND "offer_discount_item"."offer" = 8846 

ORDER BY "offer_discount_item"."hierarchy" ASC, "offer_order_item"."id" ASC
Wie man sieht, sind die Positionen durch die verschiedenen Prozentwerte dreifach in der Ausgabe. Und diese CrossTab Funktion verstehe ich nicht so ganz.
(Ich greife über die Base postgresql auf deine postgresql Datenbank zu und teste die Abfragen in Base und schreibe diese danach in das Makro)
Dateianhänge
Unbenannt.PNG
Unbenannt.PNG (24.58 KiB) 2951 mal betrachtet

Re: Daten 3fach durch eine Spalte mit unterschiedlichen wert

von DPunch » Mi, 06.04.2011 18:24

Aloha

Das Reindenken in die Sache, ohne den prinzipiellen Aufbau zu kennen, ist mir ehrlich gesagt gerade zu anstrengend ;)

Aber kannst Dich vielleicht hier mal umschauen: PostgreSQL: tablefunc Stichwort crosstab.

Re: Daten 3fach durch eine Spalte mit unterschiedlichen wert

von MikeRo » Mi, 06.04.2011 15:03

Das ist eine riesige Datenbank und ich greife nur auf teile zu.

Ich habe folgende Verknüpfungen.:

Tabelle OFFER -> OFFER-ID

-Verknüpft mit Positionen über OFFER-ID (Somit können pro offer mehrere Positionen existieren.)

Tabelle Positionen POSITIONEN-ID, OFFER-ID

-Verknüpft mit Rabatte über POSITIONEN-ID (Somit können mehrere unterschiedliche Rabatte pro Position existieren)

Tabelle Rabatte RABATT-ID, POSITIONEN-ID

Re: Daten 3fach durch eine Spalte mit unterschiedlichen wert

von DPunch » Mi, 06.04.2011 14:35

Aloha

Zeig mir mal bitte einen Screenshot, wie die Tabellen verknüpft sind, ich kann Dir da nicht ganz folgen.

Re: Daten 3fach durch eine Spalte mit unterschiedlichen wert

von MikeRo » Mi, 06.04.2011 14:26

DPunch hat geschrieben:Aloha
MikeRo hat geschrieben:Die Prozentwerte sind je Angebot variabel und mal gibt es bestimmte Prozente mal nicht und auch nicht zu jeder Position...
Wenn es eine dymische Anzahl von Prozentwerten und auch noch völlig unterschiedliche Prozentwerte gibt, wirst Du diese Darstellung nicht vernünftig hinbekommen.
Eine feste Begrenzung auf 3 feste Prozentwerte wäre per Holzhammer-Methode noch halbwegs annehmlich umsetzbar, aber dynamische Spaltenzahlen - nur mit Makro.
Die Frage ist wie mache ich das am besten.

ich habe folgende Idee.

Die Positionen sind in einer Tabelle. mit einer bestimmten Positions-ID
Die Prozentwerte sind in einer Extratabelle welche über die Positions-ID mit der PositionenTabelle verbunden ist.

Ich habe bei der Ausgabe einfach mal alle IDs der Positionen in die Prozentspalten eingetragen.
(Die Spaltenüberschriften der Prozente werden aus der Prozentabelle gelesen und die entsprechenden Werte auch)

|Position|Prozent 15|Prozent16|......
Test 1|84|84
Test 2|85|85
Test 3|86|86

Somit müsste ich nach und nach die Spalten befüllen. erst die Spalte mit Prozent 15. Und dann eben nur an der stelle die werte eintragen, ab der auch Prozentwerte hingehören. in die anderen einfach eine Null. Weißt du wie ich das meine?

Nach der ersten Ausgabe. Habe ich die Tabelle erstellt und die Spalten mit den unterschiedlichen prozenten, egal wie viele es gibt oder nicht. das ist schon variabel drin. Aber wie bekomme ich jetzt an die richtigen stellen die werte. Ich kann ja eine Abrage machen. Welche nur die Positionen Anzeigt, die den Prozentwert der ersten Prozentspalte haben (15). Aber wie bekomme ich die einträge in die richtige spalte. Denn wenn es dort z.B. nur einen eintrag gibt kommt der direkt in die erste zeile. aber wenn er zu der ID 86 gehört muss er ja in die letzte. Es ist auch nicht garantiert, das die ID aufsteigend sortiert sind.

Re: Daten 3fach durch eine Spalte mit unterschiedlichen wert

von DPunch » Mi, 06.04.2011 14:14

Aloha
MikeRo hat geschrieben:Die Prozentwerte sind je Angebot variabel und mal gibt es bestimmte Prozente mal nicht und auch nicht zu jeder Position...
Wenn es eine dymische Anzahl von Prozentwerten und auch noch völlig unterschiedliche Prozentwerte gibt, wirst Du diese Darstellung nicht vernünftig hinbekommen.
Eine feste Begrenzung auf 3 feste Prozentwerte wäre per Holzhammer-Methode noch halbwegs annehmlich umsetzbar, aber dynamische Spaltenzahlen - nur mit Makro.

Re: Daten 3fach durch eine Spalte mit unterschiedlichen wert

von MikeRo » Mi, 06.04.2011 12:34

pmoegenb hat geschrieben:Weshalb sortierst Du die Datensätze ohne Prozentangaben in der WHERE-Klausel nicht einfach aus ?

Beispiel:

Code: Alles auswählen

and not Tabelle1.SpalteProz is Null
Ich möchte folgende ausgabe haben

Tabelle a hat die Datensätze und Tabelle B hat die Prozente.:

Folgende Ausgabe habe ich.

|Angebot|Beschreibung|Prozente|
|101|Test1|15|
|101|Test2|15|
|101|Test2|16|
|101|Test2|60|
|101|Test3|16|
|101|Test4|15|
|101|Test4|60|

Und ich möchte

|Angebot|Beschreibung|Prozente15|Prozente16|Prozente60
|101|Test1|15|__|__|
|101|Test2|15|16|60|
|101|Test3|__|16|__|
|101|Test4|15|__|60|

Ich muss eine Büroanwendung schreiben, die Angebote automatisch erstellt und die Positionen in eine Excel Tabelle schreibt. Dann kommen noch neue Spalten hinten dran, in die Formeln kommen. Die Prozentwerte sind je Angebot variabel und mal gibt es bestimmte Prozente mal nicht und auch nicht zu jeder Position... :/

Re: Daten 3fach durch eine Spalte mit unterschiedlichen wert

von pmoegenb » Mi, 06.04.2011 12:24

Weshalb sortierst Du die Datensätze ohne Prozentangaben in der WHERE-Klausel nicht einfach aus ?

Beispiel:

Code: Alles auswählen

and not Tabelle1.SpalteProz is Null

Nach oben