Autor | Zpráva | ||
---|---|---|---|
JaySee Profil |
Ahoj,
vymýšlím script pro počítání výsledků soutěže a těžce jsem se zasekl. Potřebuji poradit s následující situací. Mám dvě tabulky, první (users) obsahuje běžná data o lidech a ID.. druhá má ID_USER, DATETIME a PRD (výsledek) Záznamů PRD může být (a je) několik pro každého soutěžícího. Jde mi o to, vybrat pro každý den aktuální výsledky, takže chci zobrazit data, která byla přidána jako poslední, spolu s informacemi o soutěžícím. A tady je můj problém. Nedaří se mi vybrat poslední přidanou hodnotu z druhé tabulky. Představuji si něco jako funkci LAST()... To je první část mého problému a ta je klíčová. Druhá věc, co mi nejde je provést rozdíl dvou posledních výsledků a mít ho k dispozici jako p.rozdil ... s ošetřenými případy, že tam nebude dost záznamů (alespon dva) pro to provést rozdíl... řekněme že ten člověk ještě nemusel zadat výsledek. EDIT: ještě mě napadlo, že by to šlo jednodušeji a to vybrat dvě poslední hodnoty (pokud jsou a uložit je jako dvě samostatně stojící, takže něco jako p.posledni a p.predposledni) pak už si to v PHP dopočitam... To by mi asi i vyhovalo víc... Prosím, pokud máte někdo nápad, jak toto vyřešit, pomozte mi. níže přikládám současný SQL dotaz: SELECT u.id AS id, u.name AS name, u.surname AS surname, MAX(p.prd) AS prd FROM users AS u LEFT JOIN vysledky AS p ON u.id = p.id_user GROUP BY u.id ORDER BY p.prd DESC |
||
Kajman Profil |
S tím předposledním to je komplikace, to pak nepůjde asi ladně verze z faq. Možná půjde takovýto nějaký pomalý dotaz
SELECT u.id AS id, u.name AS name, u.surname AS surname, (SELECT p.prd FROM vysledky p WHERE u.id = p.id_user ORDER BY `datetime` DESC LIMIT 1, 1) AS predposleni_prd, (SELECT p.prd FROM vysledky p WHERE u.id = p.id_user ORDER BY `datetime` DESC LIMIT 0, 1) AS prd FROM users AS u ORDER BY prd DESC |
||
JaySee Profil |
#3 · Zasláno: 29. 10. 2012, 13:08:43
Velice děkuji! Moc jsi mi pomohl.
|
||
Časová prodleva: 11 let
|
0