ostpower Geschrieben 30. April 2008 Teilen Geschrieben 30. April 2008 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. Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Ratzinger Geschrieben 30. April 2008 Teilen Geschrieben 30. April 2008 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 Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Jan Jansen Geschrieben 30. April 2008 Teilen Geschrieben 30. April 2008 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 Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
SoL_Psycho Geschrieben 6. Mai 2008 Teilen Geschrieben 6. Mai 2008 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 Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
ostpower Geschrieben 7. Mai 2008 Autor Teilen Geschrieben 7. Mai 2008 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? Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Ratzinger Geschrieben 7. Mai 2008 Teilen Geschrieben 7. Mai 2008 Vielleicht hilft dir dieser Link Relationale Algebra â€â€œ Wikipedia Zitieren Link zu diesem Kommentar Auf anderen Seiten teilen Mehr Optionen zum Teilen...
Empfohlene Beiträge
Dein Kommentar
Du kannst jetzt schreiben und Dich später registrieren. Wenn Du ein Konto hast, melde Dich jetzt an, um unter Deinem Benutzernamen zu schreiben.