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
Velice děkuji! Moc jsi mi pomohl.

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm: