Veröffentlicht 30. April 200817 j Ich habe ein Problem und fürchte dass ich das mit reinem SQL nicht lösen kann sondern nur mit PL/SQL. Und zwar möchte ich an Datensätze einer tabelle1 Preis informationen aus einer 2. tabelle anhängen. Jetzt richten sich die preise nach bestimmten attributen der ersten tabelle. dabei kann es vorkommen, dass zu einem datensatz der tabelle1 vielleicht 10 Preise der zweiten tabelle passen, ist das der fall, möchte ich einen durchschnittswert aus den 10 Werten bilden und diesen dann anhängen, nur wie mach ich dass dann, dass praktisch erstmal abgefragt wird, ob mehrere Preise passen und dass dann davon der durchschnittswert genommen wird. Weil ohne solch ein script, nimmt er sich ja einfach einen (wahrscheinlich den ersten) Wert von den 10 und hängt ihn an den datensatz.
30. April 200817 j Du kannst doch einfach in einem Subselect alle Abfragen wo der Preis passt und dann mit der Durchschnittsmethode (kA wie die genau heißt) rechnest den schnitt aus..wenn es nur einen Preis gibt, dann eben nur einen, bei 2 aus 2 usw mfg
30. April 200817 j Bei einem Join kann sich die Anzahl der Sätze verändern (es wird nicht nur 1 passender Satz genutzt, sondern alle die passen) Wenn du in Tabelle A 1 Satz hast, zu dem in Tabelle B 10 Sätze passen, dann hat deine Ergebnissmenge auch 10 Sätze. Die Lösung für dein Problem ist also: TabelleA Join TabelleB (dann hast du für einige Artikel mehrere Preise) und das Ergebnis mit GROUP BY / AVG aggregieren
6. Mai 200817 j Ich habe ein Problem und fürchte dass ich das mit reinem SQL nicht lösen kann sondern nur mit PL/SQL. Und zwar möchte ich an Datensätze einer tabelle1 Preis informationen aus einer 2. tabelle anhängen. Jetzt richten sich die preise nach bestimmten attributen der ersten tabelle. dabei kann es vorkommen, dass zu einem datensatz der tabelle1 vielleicht 10 Preise der zweiten tabelle passen, ist das der fall, möchte ich einen durchschnittswert aus den 10 Werten bilden und diesen dann anhängen, nur wie mach ich dass dann, dass praktisch erstmal abgefragt wird, ob mehrere Preise passen und dass dann davon der durchschnittswert genommen wird. Weil ohne solch ein script, nimmt er sich ja einfach einen (wahrscheinlich den ersten) Wert von den 10 und hängt ihn an den datensatz. Falls noch aktuell: SELECT Tabelle1.Informationen, AVG(Tabelle2.Preis) FROM Tabelle1 INNER JOIN Tabelle2 ON Tabelle1.FK_ID = Tabelle2.PK_ID GROUP BY Tabelle1.Informationen Hoffe das passt, habs jetzt mal aussm Bauch heraus geschrieben
7. Mai 200817 j Autor Hey super, ich habs jetzt im prinzip genauso gemacht, nur hab ich es mit nem leftjoin gemacht, was ist nochma genau der unterschied zum inner join?
Archiv
Dieses Thema wurde archiviert und kann nicht mehr beantwortet werden.