php.de

Zurück   php.de > Webentwicklung > PHP-Fortgeschrittene

PHP-Fortgeschrittene Arbeiten mit PHP ohne Einschränkungen

Antwort
 
LinkBack Themen-Optionen Thema bewerten
Alt 21.11.2005, 10:06  
Erfahrener Benutzer
 
Registriert seit: 29.09.2004
Beiträge: 106
becks123
Standard SQL Abfrage für Voting System??

Servus Leute,

ich möchte gerne einen SQL Query haben.

Folgende Situation:

Eine Tabelle existiert, in der Votings (Abstimmungen) gespeichert sind, von 1 - 10, inklusive dem Mitgliedsnamen

z.B.

Voting Mitglied
5 tester
7 tester
1 hubert
4 elfriede
5 hubert

usw.

Nun möchte ich einen SQL Query haben, der mir folgendes liefert.

Er soll mir eine Ergebnistabelle ausgeben, in der das best bewerteste Mitglied oben steht, das zweitbeste dadrunter usw.

Diese Rangliste soll mit einem Durchschnitt bestimmt werden.

Wenn z.B. hubert 1x mit 5 und 1x mit 10 bewertet wurde, ist der durchschnitt 7,5.

Und bei elfriede wurde 1x mit 5 und 1x mit 3 bewertet, ist der durchschnitt 4.

Nun soll hubert mit 7,5 als erstes in der Ergebnistabelle stehen, und danach direkt elfriede usw.

Wie mache ich das?

Danke euch!!
becks123 ist offline   Mit Zitat antworten
Sponsor Mitteilung
PHP Code Flüsterer

Registriert seit: 21.08.2005
Beiträge: 4682
PHP-Kenntnisse:
Fortgeschritten

Alt 21.11.2005, 10:20  
Erfahrener Benutzer
 
Registriert seit: 21.05.2008
Beiträge: 9.937
Zergling-new wird schon bald berühmt werden
Standard Re: SQL Abfrage für Voting System??

Zitat:
Zitat von becks123
ich möchte gerne einen SQL Query haben.
Du meinst Hilfe ihn selbst zu erstellen? Bist übrigens im falschen Board

Bin leider kein SQL-Experte, aber vielleicht helfen dir die Funktionen SUM(voting) AS sv, und GROUP BY(mitglied) was.
Zur Sortierung dann ORDER BY sv DESC
Zergling-new ist offline   Mit Zitat antworten
Alt 21.11.2005, 10:25  
Gast
 
Beiträge: n/a
Standard

wenn deine Tabelle außer den beiden genannten Spalten
auch noch eine Spalte `Bewertung`hat,
kannst du folgende Abfrage testen:
Code:
SELECT
   Mitglied,
   AVG(Bewertung) AS Durchschnitt
FROM
   tabelle
GROUP BY
   Mitglied
ORDER BY
   Durchschnitt DESC
~dilemma~
  Mit Zitat antworten
Alt 21.11.2005, 11:08  
Erfahrener Benutzer
 
Registriert seit: 29.09.2004
Beiträge: 106
becks123
Standard

suuuper! hat geklappt...dank dir
becks123 ist offline   Mit Zitat antworten
Alt 21.11.2005, 12:11  
Erfahrener Benutzer
 
Registriert seit: 29.09.2004
Beiträge: 106
becks123
Standard

noch eine kurze Frage...habe jetzt folgenden Befehl gebastelt:

Code:
SELECT count(memId) as voteAnzahl, geschlecht, memId, picId, AVG( voteValue ) AS Durchschnitt FROM `vote_data` AS t1
LEFT JOIN `mitglieder` AS t2 ON t1.memId = t2.ID
WHERE t2.geschlecht = 'm'
GROUP BY memId
ORDER BY Durchschnitt DESC LIMIT 0, 10

Jetzt hätte ich aber noch gerne die gesamte Anzahl an Datensätzen, die er gefunden hat, als Ausgabe. Da ich aber auch einen Teilausschnitt brauche (LIMIT 0, 10) weiß ich nicht genau, wie ich jetzt dennoch mit diesem Befehl die Anzahl der Datensätze auslesen kann.

Weiß jemand Rat???
becks123 ist offline   Mit Zitat antworten
Alt 21.11.2005, 12:38  
Erfahrener Benutzer
 
Registriert seit: 13.11.2005
Beiträge: 2.583
xabbuh
Standard

Dafür kannst du den Zusatz SQL_CALC_FOUND_ROWS benutzen und anschließend mit SELECT FOUND_ROWS() die Anzahl der gesamten Datensätze ermitteln:

Code:
 
SELECT SQL_CALC_FOUND_ROWS
 
    COUNT(memID) AS voteAnzahl
 
...
 
ORDER BY
 
    Durchschnitt DESC
 
LIMIT
 
    0, 10;
 

 
SELECT FOUND_ROWS()
xabbuh ist offline   Mit Zitat antworten
Alt 21.11.2005, 12:42  
Gast
 
Beiträge: n/a
Standard

Wenn du mit >>> Anzahl der Datensätze <<<
die Anzahl der ALLER Datensätze meinst,
die in der Tabelle `vote_data` enthalten sind,
musst du diese Anzahl separat abfragen.
zB so:
Code:
SELECT
count(*)
FROM `vote_data`
oder eventuell auch so:
Code:
SELECT
count(*)
FROM `vote_data` AS t1
LEFT JOIN `mitglieder` AS t2
   ON t1.memId = t2.ID
      AND t2.geschlecht = 'm'
WHERE
   t2.geschlecht IS NOT NULL
sorry:
Ich verstehe deine Frage nicht so richtig ...

~dilemma~
  Mit Zitat antworten
Alt 21.11.2005, 12:46  
Erfahrener Benutzer
 
Registriert seit: 13.11.2005
Beiträge: 2.583
xabbuh
Standard

Zitat:
Zitat von dilemma
sorry:
Ich verstehe deine Frage nicht so richtig ...
Ich vermute, dass becks123 die Anzahl der Datensätze benötigt, die er erhalten würde, wenn er das LIMIT weglassen würde. So etwas kann ja zum Beispiel für die Aufteilung auf mehrere Seiten sinnvoll sein.
xabbuh ist offline   Mit Zitat antworten
Alt 21.11.2005, 14:12  
Erfahrener Benutzer
 
Registriert seit: 29.09.2004
Beiträge: 106
becks123
Standard

genau xabbuh, so meinte ich das! Ich benötige das für eine Seitenaufteilung.

Nur geht das irgendwie nicht...

Der Query sieht jetzt so aus:

Code:
SELECT SQL_CALC_FOUND_ROWS
    count(memID) AS Anzahl, geschlecht, memId, picId, AVG( voteValue ) AS Durchschnitt, count(memId) as Anzahl FROM `vote_data` AS t1
LEFT JOIN `mitglieder` AS t2 ON t1.memId = t2.ID
WHERE t2.geschlecht = 'w'
GROUP BY memId
ORDER BY Durchschnitt DESC LIMIT 0, 10
Nur weiß ich nicht, was ich mit "SELECT FOUND_ROWS()" anfangen soll.

Wo soll das hin?

Kannst du mir mal ein Beispiel angeben, wie ich das dann auslesen kann?

Danke!
becks123 ist offline   Mit Zitat antworten
Alt 21.11.2005, 14:15  
Erfahrener Benutzer
 
Registriert seit: 13.11.2005
Beiträge: 2.583
xabbuh
Standard

SELECT FOUND_ROWS() ist auch eine MySQL-Abfrage, die du anschließend abschickst und genauso verarbeitest, wie du sonst auch mit SELECT-Statements vorgehst. Oder wo genau liegt da jetzt dein Problem?
xabbuh ist offline   Mit Zitat antworten
Antwort


Themen-Optionen
Thema bewerten
Thema bewerten:

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

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

Ähnliche Themen
Thema Autor Forum Antworten Letzter Beitrag
Abfrage von einer Abfrage Datenbanken 5 27.01.2011 23:31
Voting System / Click Counter maka300 PHP Tipps 2008 2 21.02.2008 15:11
mysql abfrage in Schleife havok PHP Tipps 2006 6 09.05.2006 08:39
Voting System PHP Tipps 2006 8 23.01.2006 21:26
abfrage begrenzen Cyrus Datenbanken 4 26.10.2005 11:29
[Erledigt] mysql abfrage über 4 Tabelle - bis 3 geht, bei der 4. habert Datenbanken 2 08.09.2005 11:59
Abfrage in array? BartTheDevil89 Datenbanken 5 10.05.2005 14:21
[Erledigt] IF() abfrage in variable packen PHP Tipps 2005 14 01.04.2005 17:23
Abfrage von Char-Feldern Datenbanken 9 04.02.2005 14:06
[Erledigt] SQL Abfrage funzt nicht Datenbanken 2 04.02.2005 11:09
[Erledigt] Mysql Abfrage Problem! PHP-Fortgeschrittene 5 27.11.2004 10:22
Abfrage funktioniert zwar, aber nicht korrekt Datenbanken 2 16.08.2004 09:10
Abfrage aus DB noch mal ausgeben und Abfrage aus mehrern Tab PHP Tipps 2004 4 12.07.2004 15:00
komplizierte mySQL Abfrage Datenbanken 6 25.06.2004 15:34

Besucher kamen über folgende Suchanfragen bei Google auf diese Seite
voting sql php, php voting system, sql abfrage durchschnitt geschlecht, php mysql voting system, php sql voting system, vote system sql, voting system mit php, php vote mit sql, wie mache ich ein voting system, order by voting sql, sql 10 tage durchschnitt, sql votingsystem, php mysql durchschnitt votes, php voting system free, voting system für filme php, php voting mit sql, voting tabelle, sql query durchschnitt, voting system mit sql, voting mit sql

Alle Zeitangaben in WEZ +2. Es ist jetzt 20:54 Uhr.




Powered by vBulletin® Version 3.7.2 (Deutsch)
Copyright ©2000 - 2012, Jelsoft Enterprises Ltd.
Search Engine Optimization by vBSEO 3.2.0
Aprilia-Forum, Aquaristik-Forum, Liebeskummer-Forum, Zierfisch-Forum, Geizkragen-Forum

Creative Commons License
Dieser Inhalt ist unter einer Creative Commons-Lizenz lizenziert.