Zum Inhalt springen

SQL-Abfrage auf 2 Tabellen mit JOIN - geht nicht :(

Erstellt am 10. Oktober 2007 · 2 Antworten · letzte Antwort am 10. Oktober 2007

Tags: Datenbank, Frage

mfgiesen ·

Hallo Zusammen,

ich steh gerade etwas auf dem Schlauch.
Ich schreibe ein Voting und es funktioniert soweit alles prima,
ich würde nur gerne jetzt die TOP3 auslesen und brauche dazu
die Daten aus der Tabelle der fe_users (diese werden gevotet)
und die Daten aus der Tabelle user_rating (Felder: feuid,ip,rating,date)

Mein SQL sieht bisher so aus:

SELECT 
	uid, 
	name, 
	AVG( `rating` ) AS "averageRating", 
	item_name
FROM 
	fe_users, 
	user_rating
WHERE 
	user_rating.item_name = fe_users.uid
GROUP BY 
	uid
ORDER BY 
	rating
LIMIT 3

Es kommt soweit auch eine Antwort mit 3 Benutzern.
Allerdings steht im Feld "averageRating" überall der Wert 3.00000.

Weiß jemand wie ich das lösen kann?

Viele Grüße,
Markus

steffenk ·

das kann so nicht gehen, Du musst die Felder eindeutig zuordnen

SELECT
  u.uid,
  u.name,
  AVG(r.rating) averageRating,
  r.item_name
FROM
  fe_users u,user_rating r
WHERE 
  r.item_name = u.uid
GROUP BY
  u.uid
ORDER BY
  r.rating
LIMIT 3
mfgiesen ·

spitze, das klappt!
mir fällt nur gerade auf, dass das absolut gar nix bringt, was ich mir da gedacht habe..
weil ich ja immer auf eine UID abfrage und völlig falsche ergebnisse bekomme. mist.

ich möchte ja _alle_ datensätze abfragen und dann die 3 rausbekommen, welche den höchsten schnitt haben...

also vermutlich muss ich zwei SQL-Abfragen machen und/oder mir ein array schreiben um das zu realisieren...

oder hat sonst noch jemand ne idee?