PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : mysql hitlisten


flobee
06.08.2003, 00:50:42
hallo
ich versuche heraus zu finden wie ich eine hitliste von einträgen bekommen kann wenn ich 2 tabellen habe und nur jew. den letzten eintrag des hits ausgeben möchte:
der query soll folgendes können: Gibt mir alle USER daten, sortiert nach dem letzten/höchsten eintrag von hits der zum jew. USER gehört

tabelle 1 users:
----------------------------------
| user_id | name | email | ...
----------------------------------

tabelle 2 hits
----------------------------------
| user_id | submitted | ...
----------------------------------
angedanchte sql (schon absichtlich falsch) damit man sieht was ich versuche :-)... ich komm nicht drauf! bei mysql.com gibts nen paar beispiele allerding für eine neuere version :-( ich brauch es für 3.23.52.
$sql = ("SELECT t1.* , t2.max(submitted)
FROM users AS t1, hits AS t2
WHERE t1.extra='$wert'
ORDER BY t2.submitted DESC
LIMIT $show, $plimit
");
lasse ich das max() weg sollte es gehen (denke ich) allerdings bekomme ich éin timeout so das ich nicht sicher bin was ich wirklich tu :-)

MiH
06.08.2003, 10:33:34
select t1.user,max(t2.punkte) as points from t1 inner join t2 using (userid) where t1.userid = 1 group by t1.userid

flobee
06.08.2003, 10:50:30
geil!
kannst du mir eine kleine info geben zu dem sql? da fehlen doch die tabellen namen auf die zugegriffen wird im FROM
diese war meine letzte idee! allerdings bleiben im ergebnis ein paar user drausen :-(
$sql = ("
SELECT t1.* , max(t2.submitted) as ssort
FROM
users AS t1 ,
hits AS t2
WHERE t1.user_id = t2.user_id
GROUP BY t1.user_id
ORDER BY ssort
LIMIT $show, $plimit
");
gruß flobee

flobee
06.08.2003, 16:37:22
select t1.user,max(t2.punkte) as points from t1 inner join t2 using (userid)
where t1.userid = 1 group by t1.userid
@MiH also bei mir kommt da null raus bzw nicht eine einzige zeile!?

ich hab aber noch was zu join gefunden! danke für den tip, kannte ich nicht!

mysql >= 3.23.17SELECT table1.* FROM table1
-> LEFT JOIN table2 ON table1.id=table2.id
-> WHERE table2.id IS NULL;
ich hab eh vergessen was für die abfrage zu definieren :-(
also: gib mir meine user liste (alle) und wenn du in den hits einträge hast so gib mir den höchsten wert und sortiere die ganze liste nach diessem wert. da war mein ´code (2 post schon richtig) allerdings frage ich mich gerade ob ich dieses alles in einem query unterbingen kann!?

lieben gruß flobee