Anzeige - [Hier werben / Mediadaten]
(?) Tags raten (?) (edit)
 
Reply to this topicStart new topicStart Poll
Diskussion

SQL: Top 10 Nutzer mit bestbewertetsten Bildern

Group By + Aggregat über zwei Tabellen

pangu
Geschrieben am: Mi 27.06.2007, 14:46
Report PostQuote Post

AyomRank 6
************

Gruppe: Member (aktiv)
Beiträge: 838
Mitglied seit: 29.07.2005


habe folgende struktur:

user:
id | nick | ...

bilder:
id | userid | votes | ...

~~~

wie kann ich jetzt die top 10 der user mit den bestbewertesten bildern auslesen?

also er soll nacheinander alle votes der bilder eines users auslesen, summieren und dann die durchshnittsbewertung der bilder dieses users ermitteln. die 10 user mit den durchschnittlich bestbewertesten bildern sollen ausgegeben werden.

-> wie frage ich das in mysql ab? thx

mein ansatz:
SELECT user.nick FROM user INNER JOIN bilder ON bilder.id = user.id GROUP BY user.id ORDER BY AVG (bilder.votes) DESC

ergebnis:
Warning: mysql_fetch_object(): supplied argument is not a valid MySQL result resource in ...

-> weiß jmd. wie man das macht? thx


--------------------
Jonglieren lernen nette Community rund ums Jonglieren
Politikum.eu Online debattieren
Top
PMEmail PosterUsers WebsiteICQ
Top
 
 
Duvi
#2 Geschrieben am: Mi 27.06.2007, 15:13 (+00:26)
Report PostQuote Post

AyomRank 6
************

Gruppe: Member (aktiv)
Beiträge: 536
Mitglied seit: 4.10.2006


meines wissens kann mysql kein order über eine funktion.

du müsstest also:
select avg(bilder.votes) as mittelwert
....
order by mittelwert

verwenden.


versuch mal:
select distinct u.nick, b.id, avg(b.votes) as mittelwert
from user u, bilder b
where u.id = b.userid
order by mittelwert desc

ungetestet!!!
Top
PMEmail Poster
Top
 
Maik
contaxe AG
#3 Geschrieben am: Mi 27.06.2007, 19:18 (+04:05)
Report PostQuote Post

AyomRank 6
************

Gruppe: Member (aktiv)
Beiträge: 520
Mitglied seit: 16.03.2006


QUOTE
SELECT user.nick FROM user INNER JOIN bilder ON bilder.id = user.id GROUP BY user.id ORDER BY AVG (bilder.votes) DESC


ein kleiner Logikfehler in der ON-Klausel... du joinst die ID des Bildes auf die ID des Benutzers, denke mal du meintest es so:

CODE
SELECT user.nick FROM user INNER JOIN bilder ON bilder.userid = user.id GROUP BY user.id ORDER BY AVG (bilder.votes) DESC



meine vorgehensweise würde ungefähr so aussehen:

CODE
SELECT u.nick, AVG(b.votes) as avgvotes FROM bilder b LEFT JOIN user u ON u.id=b.userid GROUP BY u.id ORDER BY avgvotes DESC


keine Ahnung ob's stimmt...


--------------------
Top
PMEmail PosterUsers WebsiteICQ
Top
 
Jürgen Auer
Server-Daten - Online-CRM-Lösungen
#4 Geschrieben am: Mi 27.06.2007, 20:29 (+01:10)
Report PostQuote Post

AyomRank 9
Group Icon

Gruppe: Experten Entwicklung
Beiträge: 3276
Mitglied seit: 4.02.2006


QUOTE (pangu @ Mi 27.06.2007, 14:46)
ergebnis:
Warning: mysql_fetch_object(): supplied argument is not a valid MySQL result resource in ...

Nach meinen sehr bescheidenen PHP-Kenntnissen heißt das, daß die Abfrage mindestens einen Syntaxfehler hatte. Sprich: Teste die Abfrage zunächst interaktiv, um genauere Fehlermeldungen zu kriegen, bevor Du sie in PHP einbettest.

Und dann gilt (zumindest beim ANSI-Standard): Wenn gruppiert/aggregiert wird, dann müssen Ausgabespalten entweder in Aggregatfunktionen verwendet werden oder in der Group By - Klausel auftauchen. Das fehlt bei den beiden bis jetzt geposteten Lösungen.

CODE
Select A.nick, AVG(B.votes) As Bewertung
From user As A Inner Join bilder As B
On A.id = B.userid
Group By A.nick
Order By Bewertung Desc


Das geht auf dem MS-SqlServer. Falls mySql eine Sortierung nach dem Aliasnamen nicht zuläßt, müßte man das über eine Unterabfrage machen (die von älteren mySql nicht unterstützt wird).


--------------------
Web-Anwendung 3.0: Ein Online-Kalender für Termine vieler Filialen.

Server-Daten - die Single-Data-Solution: Web-Datenbanken als Online - CRM - Lösung.
Ihre Geschäftsprozesse entscheiden, was Ihre Online-Datenbank macht. Sie konzentrieren sich auf Ihr Kerngeschäft - Ihre Datenbank funktioniert.
Top
PMEmail PosterUsers Website
Top
 
pangu
#5 Geschrieben am: Mi 27.06.2007, 20:47 (+00:18)
Report PostQuote Post

AyomRank 6
************

Gruppe: Member (aktiv)
Beiträge: 838
Mitglied seit: 29.07.2005


@jAuer: so funktioniert es, vielen dank smile.gif


--------------------
Jonglieren lernen nette Community rund ums Jonglieren
Politikum.eu Online debattieren
Top
PMEmail PosterUsers WebsiteICQ
Top
 
Thema wird von 0 Benutzer(n) gelesen (0 Gäste und 0 anonyme Benutzer)
0 Mitglieder:
Trackback-Url: http://www.ayom.com/track/t/19119

Topic Options Reply to this topicStart new topicStart Poll

 


> Ähnliche Themen
Brauche Nutzer die sich anmelden! mywebroom 275 2 Do 26.11.2009, 12:28
Nutzer von Google Analytics abgemahnt Christian 658 7 Do 26.11.2009, 07:24
Suche Nutzer von Verzeichnissen Christian 142 0 Sa 18.04.2009, 09:42
AdSense mit Bildern verursachte 400% mehr Einnahme woody 948 7 So 30.03.2008, 22:53
Schweiz: 1 Jahr Gefängnis für P2P-Nutzer Joel 2335 11 Sa 8.12.2007, 12:16
Ausrichten von Bildern Peter Schneider 358 3 So 18.03.2007, 11:22
Abmahnung für Web1 Confixx-Nutzer HoBbY 1605 20 Di 6.03.2007, 19:35
YouTube will Nutzer mitverdienen lassen benny 2522 13 So 25.02.2007, 12:01
www art project mit ca. 200 bildern von jedem land Liebenwald 529 2 Sa 6.01.2007, 21:12




Anzeige - [Hier werben / Mediadaten]



Anzeigen


[Hier werben / Mediadaten]