Zurück   klamm-Forum > Virtual World > Programmierung

Antwort
 
LinkBack Themen-Optionen Ansicht
Alt 26.03.2011, 20:28:18   #1 (permalink)
kanz pöhse
Benutzerbild von LasMiranda

ID: 28058
Lose-Remote

LasMiranda eine Nachricht über ICQ schicken LasMiranda eine Nachricht über AIM schicken LasMiranda eine Nachricht über MSN schicken LasMiranda eine Nachricht über Yahoo! schicken LasMiranda eine Nachricht über Skype™ schicken
Reg: 05.05.2006
Beiträge: 2.897
LasMiranda genießt hohes AnsehenLasMiranda genießt hohes AnsehenLasMiranda genießt hohes AnsehenLasMiranda genießt hohes AnsehenLasMiranda genießt hohes AnsehenLasMiranda genießt hohes AnsehenLasMiranda genießt hohes AnsehenLasMiranda genießt hohes AnsehenLasMiranda genießt hohes AnsehenLasMiranda genießt hohes AnsehenLasMiranda genießt hohes Ansehen
Standard *erledigt* Summe der Top-10-User mit Mindestpunkten

Es geht darum, dass ich die Summe der Top-10-User als Ergebnis bekomme.

Es wird MySQL 4 eingesetzt, ... leider.

Eigentlich hatte ich nämlich schon diese Abfrage, aber die geht unter der 4 scheinbar nicht, denn der Start der Unterabfrage wird als Fehlerbeginn angezeigt.

PHP-Code:
1:
select sum(`punkte`) FROM (SELECT `punkteFROM `nutzerWHERE `status`=AND `punkte`>=10 ORDER BY `punkteDESC LIMIT 10) as `summe 
Das hatte ich eigentlich relativ schnell, aber ich bekomm' es eben nicht für MySQL 4 hin.

PHP-Code:
1:
SELECT sum(`punkte`) FROM `nutzerWHERE  `status`=AND `punkte`>=10 ORDER BY `punkteDESC LIMIT 10 
Und das erzeugt die Summe alle Einträge (WHERE wird also "ignoriert").

Durch Toplisten-Script bin ich bis jetzt auch noch nicht schlauer geworden.

EDIT: Gelöst durch Umstellung auf MySQL 5. Die JOIN-, INNER-JOIN, LEFT- oder RIGHT-JOIN-Abfrage, die für MySQL 4 funktioniert hätte, habe ich nicht gefunden.
Gruß, Martin
Losekredite/-anleihen: 0,7%-0,9%/Tag

Deppenapostroph? CD's, DVD's, Mehrzahl und Genitiv ohne Apostroph
Deppenleerzeichen? Service Gebühr, Lose Seite, ... zusammenhängende Worte auch zusammenschreiben, also Loseseite, Servicegebühr oder mit - trennen
totaler Schrott? AGB's - Grund: laut Duden ist AGB schon die Mehrzahl + Deppenapostroph

Geändert von LasMiranda (28.03.2011 um 19:01:45 Uhr)
LasMiranda ist offline   Mit Zitat antworten
Gesponsorte Links
Alt 27.03.2011, 10:45:55   #2 (permalink)
alias Echnaton
Benutzerbild von transversalis

ID: 309239
Lose-Remote

Reg: 18.01.2008
Beiträge: 2.399
transversalis genießt hohes Ansehentransversalis genießt hohes Ansehentransversalis genießt hohes Ansehentransversalis genießt hohes Ansehentransversalis genießt hohes Ansehentransversalis genießt hohes Ansehentransversalis genießt hohes Ansehentransversalis genießt hohes Ansehentransversalis genießt hohes Ansehentransversalis genießt hohes Ansehentransversalis genießt hohes Ansehen
Standard

Bist Du sicher, dass die komplette WHERE-Bedingung ignoriert wird
( und nicht nur das ORDER BY `punkte` DESC LIMIT 10 ) ?
"transversalis teleport" sprach der Magier und war fort
transversalis ist offline   Mit Zitat antworten
Alt 27.03.2011, 11:06:12   #3 (permalink)
Shinichi Kudo
Benutzerbild von Black-Horse

ID: 82692
Lose-Remote

Reg: 03.05.2006
Beiträge: 326
Black-Horse befindet sich auf einem aufstrebenden Ast
Standard

Die Where Bedingung ist einfach falsch.

Dort wird schon geprüft ob punkte > 10 ist, die richtige prüfung müsste aber auch sum(punkte) > 10 laufen - vermute ich mal als hellseher der deine daten nicht kennt.

aber vermutlich wird in punkte immer nur 1 oder 0 drin stehen und deswegen wird die wherbedingung nie Daten finden.
Black-Horse ist offline   Mit Zitat antworten
Alt 27.03.2011, 13:21:13   #4 (permalink)
kanz pöhse
Benutzerbild von LasMiranda

ID: 28058
Lose-Remote

LasMiranda eine Nachricht über ICQ schicken LasMiranda eine Nachricht über AIM schicken LasMiranda eine Nachricht über MSN schicken LasMiranda eine Nachricht über Yahoo! schicken LasMiranda eine Nachricht über Skype™ schicken
Reg: 05.05.2006
Beiträge: 2.897
LasMiranda genießt hohes AnsehenLasMiranda genießt hohes AnsehenLasMiranda genießt hohes AnsehenLasMiranda genießt hohes AnsehenLasMiranda genießt hohes AnsehenLasMiranda genießt hohes AnsehenLasMiranda genießt hohes AnsehenLasMiranda genießt hohes AnsehenLasMiranda genießt hohes AnsehenLasMiranda genießt hohes AnsehenLasMiranda genießt hohes Ansehen
Standard

Nein, es soll so sein, dass die der TOP-10-User angezeigt wird - deshalb das SUM.

Die Mindestpunkte der Nutzer sollen 10 sein.

Als Beispiel:
NutzerPunkte
n15
n23
n31
3 Punkte sind Minimum, also fällt n3 raus und die Summe ist 8.

Zitat:
Zitat von transversalis Beitrag anzeigen
Bist Du sicher, dass die komplette WHERE-Bedingung ignoriert wird...
Das stimmt, da ist ein Fehler von mir, weil die Mindestpunkte werden mit ausgewählt, aber die ganze Abfrage gilt für Datensätze, die die Mindestpunkte erreicht haben.

Es soll so was wie eine Toplist werden.
Die ersten z. B. 10 Nutzer, der Nutzer, die die Mindestpunktzahl erreicht haben, sollen extra dargestellt werden.
Der Status ist da mehr oder weniger irrelevant, da das eigentlich mehr bedeutet: aktiv oder gesperrt (hatte ich vergessen herauszunehmen).

Es kann damit natürlich auch sein, dass nicht immer genau oder mehr Teilnehmer verfügbar sind, die der WHERE-Klausel entsprechen.

Im Moment würde mir es ja reichen, wenn ich die Summe bekäme. Später würde ich natürlich umstellen, dass ich Summe der Punkte und Abfrage der jeweiligen User direkt bekomme - dann spare ich ja eine Abfrage.
Gruß, Martin
Losekredite/-anleihen: 0,7%-0,9%/Tag

Deppenapostroph? CD's, DVD's, Mehrzahl und Genitiv ohne Apostroph
Deppenleerzeichen? Service Gebühr, Lose Seite, ... zusammenhängende Worte auch zusammenschreiben, also Loseseite, Servicegebühr oder mit - trennen
totaler Schrott? AGB's - Grund: laut Duden ist AGB schon die Mehrzahl + Deppenapostroph

Geändert von LasMiranda (27.03.2011 um 13:35:26 Uhr)
LasMiranda ist offline Threadstarter   Mit Zitat antworten
Alt 28.03.2011, 15:08:52   #5 (permalink)
Im RL-Dauerstress

ID: 99452
Lose-Remote

justme69 eine Nachricht über ICQ schicken justme69 eine Nachricht über Skype™ schicken
Reg: 25.04.2006
Beiträge: 596
justme69 wird schon bald berühmt werdenjustme69 wird schon bald berühmt werden
Standard

eine summe über ein mysql-feld zu bilden macht nur sinn, wenn in der Tabelle zum z.B. Nutzer mehrere Zeilen enthalten sind.

Ansonsten hilft dir die WHERE-bedingung und ein ORDER BY.

Einfacher wäre es, wenn du das create-Table Statement mal hier auflistest.
Dann könnte ich/wir hier evtl. besser raten ;-)
MfG Stefan
Klamm: ~NP~|~Bewertungen~|~GB~
Aktuell: ~ [V] eBesucher ~
Referenzen: ~JustMe69~|~Silbertruhe~|~DEVI MultiMedia~

Geändert von justme69 (28.03.2011 um 15:46:21 Uhr)
justme69 ist offline   Mit Zitat antworten
Alt 28.03.2011, 16:10:44   #6 (permalink)
kanz pöhse
Benutzerbild von LasMiranda

ID: 28058
Lose-Remote

LasMiranda eine Nachricht über ICQ schicken LasMiranda eine Nachricht über AIM schicken LasMiranda eine Nachricht über MSN schicken LasMiranda eine Nachricht über Yahoo! schicken LasMiranda eine Nachricht über Skype™ schicken
Reg: 05.05.2006
Beiträge: 2.897
LasMiranda genießt hohes AnsehenLasMiranda genießt hohes AnsehenLasMiranda genießt hohes AnsehenLasMiranda genießt hohes AnsehenLasMiranda genießt hohes AnsehenLasMiranda genießt hohes AnsehenLasMiranda genießt hohes AnsehenLasMiranda genießt hohes AnsehenLasMiranda genießt hohes AnsehenLasMiranda genießt hohes AnsehenLasMiranda genießt hohes Ansehen
Standard

PHP-Code:
1:
2:
3:
4:
5:
CREATE TABLE IF NOT EXISTS `user` (
  `
useridvarchar(50NOT NULL default '',
  `
statustinyint(1NOT NULL default '0',
  `
punktebigint(20NOT NULL default '0'
); 
Und als Einträge:
PHP-Code:
1:
2:
INSERT INTO `user` (`userid`, `status`,`punkte`) VALUES
('user1'1500000),('user2'110000),('user3'10),('user4'0100000000),('user5'125678),('user6'1100000); 
Damit die Tabellenwerte der Top 10 mit Mindestpunktzahl 25.000 und Status=1, die meisten Punkte zuerst (formatiert).
NamePunkte
user1500.000
user6100.000
user525.678
Summe625.678
Und diese 625.678 möchte ich schon per Abfrage wissen. Es sind keine 10 Teilnehmer vorhanden, trotzdem existiert ja eine "Top-Liste".

User 2+3: keine 25.000
User 4: Status 0

Wenn mehr als 10 teilnehmen, dann sollen nur die ersten 10 gezählt werden, die die Punkte- und Statusbedingung erfüllen.
(besser kann ich es nicht erklären)

Eventuell hat es sich erledigt, denn ich habe gefragt, ob MySQL 5 geht. Dann klappt das auch mit Subquerys und ich kann abfragen.
Gruß, Martin
Losekredite/-anleihen: 0,7%-0,9%/Tag

Deppenapostroph? CD's, DVD's, Mehrzahl und Genitiv ohne Apostroph
Deppenleerzeichen? Service Gebühr, Lose Seite, ... zusammenhängende Worte auch zusammenschreiben, also Loseseite, Servicegebühr oder mit - trennen
totaler Schrott? AGB's - Grund: laut Duden ist AGB schon die Mehrzahl + Deppenapostroph
LasMiranda ist offline Threadstarter   Mit Zitat antworten
Alt 28.03.2011, 16:37:57   #7 (permalink)
Im RL-Dauerstress

ID: 99452
Lose-Remote

justme69 eine Nachricht über ICQ schicken justme69 eine Nachricht über Skype™ schicken
Reg: 25.04.2006
Beiträge: 596
justme69 wird schon bald berühmt werdenjustme69 wird schon bald berühmt werden
Standard

Ins Blaue:
Code:
1:
2:
3:
4:
select userid, punkte from user where status = 1 and punkte > 25.000
oder
Code:
1:
2:
3:
4:
select sum(punkte) from user where status = 1 and punkte > 25.000

Habe bei mir zwar mysql5 solte aber gehen - oder
;-)

Damit hast du zwar nicht die Gesamtsumme der Punkte aber die kannst du addieren...
SUM ist eine Aggregatsfunktion, eine Zustandsfunktion.

Eine Abfrage bei der du die einzelnen User aufgelistet bekommst und zusätzlich die Gesamtsumme - glaube nicht das das in einer Query geht.

Ich lass mich gern vom Gegenteil überzeugen
:-)
MfG Stefan
Klamm: ~NP~|~Bewertungen~|~GB~
Aktuell: ~ [V] eBesucher ~
Referenzen: ~JustMe69~|~Silbertruhe~|~DEVI MultiMedia~

Geändert von justme69 (28.03.2011 um 16:53:35 Uhr)
justme69 ist offline   Mit Zitat antworten
Alt 28.03.2011, 18:59:41   #8 (permalink)
kanz pöhse
Benutzerbild von LasMiranda

ID: 28058
Lose-Remote

LasMiranda eine Nachricht über ICQ schicken LasMiranda eine Nachricht über AIM schicken LasMiranda eine Nachricht über MSN schicken LasMiranda eine Nachricht über Yahoo! schicken LasMiranda eine Nachricht über Skype™ schicken
Reg: 05.05.2006
Beiträge: 2.897
LasMiranda genießt hohes AnsehenLasMiranda genießt hohes AnsehenLasMiranda genießt hohes AnsehenLasMiranda genießt hohes AnsehenLasMiranda genießt hohes AnsehenLasMiranda genießt hohes AnsehenLasMiranda genießt hohes AnsehenLasMiranda genießt hohes AnsehenLasMiranda genießt hohes AnsehenLasMiranda genießt hohes AnsehenLasMiranda genießt hohes Ansehen
Standard

Doch, mit MySQL 5 geht es so

PHP-Code:
1:
select sum(`punkte`) FROM (SELECT `punkteFROM `userWHERE `status`=AND `punkte`>=25000 ORDER BY `punkteDESC LIMIT 10) as `summe 
Aber ist mittlerweile schon umgestellt und klappt nun endlich auch.

Danke für die Hilfe.
Gruß, Martin
Losekredite/-anleihen: 0,7%-0,9%/Tag

Deppenapostroph? CD's, DVD's, Mehrzahl und Genitiv ohne Apostroph
Deppenleerzeichen? Service Gebühr, Lose Seite, ... zusammenhängende Worte auch zusammenschreiben, also Loseseite, Servicegebühr oder mit - trennen
totaler Schrott? AGB's - Grund: laut Duden ist AGB schon die Mehrzahl + Deppenapostroph
LasMiranda ist offline Threadstarter   Mit Zitat antworten
Antwort

Gesponsorte Links

Anzeige


Aktive Benutzer in diesem Thema: 1 (Registrierte Benutzer: 0, Gäste: 1)
 
Themen-Optionen
Ansicht

Forumregeln
Es ist Ihnen nicht erlaubt, neue Themen zu verfassen.
Es ist Ihnen nicht erlaubt, auf Beiträge zu antworten.
Es ist Ihnen nicht erlaubt, Anhänge hochzuladen.
Es ist Ihnen nicht erlaubt, Ihre Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks sind an
Pingbacks sind an
Refbacks sind an


Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Excel - Summe erzeugen mit Bedingung YoBnEb Software/Windows 2 09.12.2009 11:28:14
[PHP/MySQL] Summe 7 Tage Togger Programmierung 4 29.09.2009 00:04:44
615 mio für nur 90€ per paypal - Nur komplette summe! Zaubersteiner Losehandel 3 05.06.2009 19:48:18


Alle Zeitangaben in WEZ +1. Es ist jetzt 17:22:10 Uhr.