joerg
Avatar joerg
Themenersteller
Fachinformatiker Anwendungsentwicklung
Content Gott (1941 Beiträge)

3 Maximal Werte in Summe (Seite 2)


joerg
Avatar joerg
Fachinformatiker Anwendungsentwicklung
Content Gott (1941 Beiträge)
am 04.08.2009, 23:08 Uhr schrieb joerg

Hallo

Ein kleiner Zwischenstand!

Diese Lösung befriedigt mich zwar nicht aber sie funktioniert soweit schon mal!
Ich mag es einfach nicht eine Zeile mehrmals zu weiderholen.
Das trifft hier auf den Fall mit dem Insert zu.


[SQL]TRUNCATE TABLE neu3;
INSERT INTO neu3
SELECT * FROM weltrang

WHERE now()<date_add(datum,interval 1 year) <br />
AND (idname =1) ORDER by punkte DESC LIMIT 3;

SELECT *, SUM(punkte) as summe FROM neu3 GROUP BY idname

ORDER by summe DESC;[/SQL]

Weg 2 den ich momentan noch versuche!
Dabei erzeuge ich als erstes eine neue Datenbank wo ich schon mal einige Datensätze eliminiere.

[SQL]
DROP TABLE IF EXISTS `lokal`.`neu` ;

CREATE TABLE `lokal`.`neu` (

`id` int( 3 ) NOT NULL AUTO_INCREMENT ,
`idname` int( 3 ) NOT NULL ,
`vorname` varchar( 15 ) COLLATE latin1_german1_ci NOT NULL ,

`name` varchar( 15 ) COLLATE latin1_german1_ci NOT NULL ,

`ort` varchar( 15 ) COLLATE latin1_german1_ci NOT NULL ,

`datum` date NOT NULL ,
`punkte` int( 3 ) NOT NULL ,
PRIMARY KEY ( `id` ) ,
KEY `idname` ( `idname` )
) ENGINE = MYISAM DEFAULT CHARSET = latin1 COLLATE =
latin1_german1_ci AUTO_INCREMENT =247;
INSERT INTO `lokal`.`neu`
SELECT *
FROM `lokal`.`weltrang`
WHERE now( ) < date_add( datum, INTERVAL 1 year )
ORDER BY punkte DESC;
[/SQL]

Hier hole ich mir die Maximalwerte und speichere sie in einer Datenbank die bereits angelegt ist. Kann ich im obrigen Beispiel auch so machen. Die Datenbank ist auch noch nicht mit den vorhanden Redunanzen bereinigt, weil ich mich noch im Experimentierstadium bewege.

[SQL]
TRUNCATE TABLE `neu2`;
INSERT INTO `lokal`.`neu2`
SELECT *, MAX(punkte) as max
FROM `lokal`.`neu` GROUP BY idname;
[/SQL]

Hier an der Stelle hake ich momentan und wollte so weitermachen das ich die Maximalwerte aus der ersten Datenbank lösche und dann die letzte Abfrage noch mal wieder hole mit dem Maximalwert dann noch mal die Maximalwerte löschen und noch einmal die Maximalwerte in die letzte Datenbank importiere.

Und dann kann ich die Summe der Maximalwerte pro idname ziehen.

@ Andre ist es jetzt ein bisschen klarer?

@ Michael Ich weiss jetzt nicht ganz genau ob ich mit einer meiner beiden Lösungen einen von dir angedachten Weg beschritten habe. Da ich mich wirklich nicht besonders auskenne mit MYSQL wäre konstruktive Kritik mir sehr angenehm. Vor 2 Wochen habe ich noch nicht mal ansatzweise die Syntax gesehen :wink:

Mir gefallen beide Wege nicht so richtig. Der erste aus dem Grunde das es einfach zuviele Abfragen sind und noch mehr werden könnten falls die Anzahl für idname zunimmt. Dem anderem stehe ich ein bisschen skeptisch gegenüber ob es sinnvoll ist so zu arbeiten.
Andererseits das was ich mache müsste in einem Forum zur Tagesordnung gehören.

Gruß

Jörg


Zufällige Umleitung zu der Startseite einer meiner Domains
Meine ungewöhnlichen Tools



« zurück zu: PHP & MySQL

Das Seitenreport Forum hat aktuell 5274 Themen und 36108 Beiträge.
Insgesamt sind 48346 Mitglieder registriert.