|
|
#1 (permalink) | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
Multitalent
|
Ich habe eine Tabelle die ungefähr so aussieht
Nun möchte ich eine Abfrage machen, die pro name1 eine Summe errechnet, wobei aber jeweils nur der größte Wert pro id berücksichtigt werden soll. Der Ausschnitt aus obigem Beispiel soll also liefern:
Die bisherige Abfrage macht das natürlich nicht richtig. Code:
Wie bekomme ich das also geschickt hin? Ich habe schon verschiedene Kombinationen mit WHERE und MAX versucht, aber das wird irgendwie nichts. Das muss doch aber irgendwie gehen ?! Einzige Alternative die ich sehe wäre eine Aufspaltung auf zwei Tabellen, einmal mit name1 (ohne Doppel) und einmal mit name2, aber das gefällt mir irgendwie gar nicht. Geändert von joschilein (10.11.2011 um 15:40:39 Uhr) |
||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|
|
|
| Gesponsorte Links |
|
|
#2 (permalink) | ||||||
|
Multitalent
|
Jetzt ist mir doch noch eine Variante eingefallen:
Code:
Dann mache ich daraus noch die Erweiterung, in der nur die Zeilen mit subid=1 berücksichtigt werden: Code:
|
||||||
|
|
|
|
#3 (permalink) |
|
be forever curious
|
Ich habe selbst noch nie wirklich damit gearbeitet, aber MySQL hat die GROUP BY-Option WITH ROLLUP.
Da sich die beiden Queries ja nur um die Einschränkung auf subid=1 unterscheiden, würde es sich ja fast anbieten, einfach nach allen subid zu gruppieren und mittels WITH ROLLUP auch die Gesamtsumme direkt mit zu ermitteln. Kannst dann ja in der Logik entscheiden, was Du brauchst und was verworfen wird. Würde das Ergebnis nicht in Spalten sondern in Zeilen liefern, aber das ist ja letztendlich auch nicht wirklich schlimm. Wie's mit der Performance vom Ganzen aussieht, wird Dir und mir bestimmt jemand anderes beantworten können.
.lange tage und angenehme nächte, tlx
:.whatthemovie.com (Screenshots raten) | PHP ExportForce-Klasse |
|
|
|
|
|
#4 (permalink) |
|
Multitalent
|
Über das Rollup bin ich auch schon gestolpert, habe aber bisher nicht einordnen können, ob oder wie das helfen könnte. Klingt aber plausibel, werde ich ausprobieren.
Performance ist in dem Fall sekundär, da es nur um eine selten benutzte Stelle für ausgewählte Benutzer geht bei der man für notfalls auch ein paar Sekunden warten mehrere Minuten Denkerei sparen kann. |
|
|
|
|
#5 (permalink) | |||
|
alias Echnaton
|
unter DB2 for z/OS würde das hier funktionieren:
Code:
"transversalis teleport" sprach der Magier und war fort
|
|||
|
|
|
|
|
#6 (permalink) | ||||||
|
Multitalent
|
Da meine realen Datensätze etwas umfangreicher sind, als im vereinfachten Beispiel ganz oben, habe ich heute erstmal geprüft, was ich eigentlich als Ergebnis erwarten würde. Bisher hat nichts wirklich gepasst, auch das Rollup hat nicht so richtig weiter geholfen.
Ich habe nun zwei Varianten gefunden, die ich einfach als zwei Abfragen laufen lasse und das nicht noch krampfhaft in eine Abfrage quetsche. Für den größten Wert pro id und name Code:
Code:
|
||||||
|
|
![]() |
| Gesponsorte Links |
| Anzeige |
| Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1) | |
| Themen-Optionen | |
| Ansicht | |
|
|
Ähnliche Themen
|
||||
| Thema | Autor | Forum | Antworten | Letzter Beitrag |
| [JS] Problem | MaxFleit | Programmierung | 8 | 26.12.2008 10:47:24 |
| USB Problem | surge | Sonstiges | 8 | 29.05.2007 22:33:01 |
| Problem gelöst :) kleenes mysql problem (auslesen) | Rene | Programmierung | 0 | 17.09.2006 14:35:39 |
| Win xp Problem | blu21 | Software/Windows | 7 | 01.08.2006 11:17:35 |