Autor Zpráva
pcmanik
Profil
Zdravím, snažím sa napísať dotaz, ktorý mi vyberie poslednú správu, ktorú má daný užívateľ so všetkými ostatnými užívateľmi. V podstate to funguje, len namiesto ich prvej správy sa mi nedarí zobraziť ich poslednú správu.
Prikladám dotaz, ktorý som doteraz spravil.

SELECT sprava, u1.meno, u1.priezvisko, u1.id, u2.meno, u2.priezvisko, u2.id
FROM spravy
LEFT JOIN uzivatelia u1 ON u1.id = od
LEFT JOIN uzivatelia u2 ON u2.id = pre
WHERE od = 1 OR pre = 1
GROUP BY u2.id
ORDER BY cas DESC

Ďakujem za pomoc :)
Kcko
Profil
GROUP BY MAX(u2.id)
pcmanik
Profil
Kcko:
Hadze mi to error - #1111 - Invalid use of group function
Kcko
Profil
Hod nekam vzorek dat a strukturu tabulky, nejsem Kajman abych si predstavil matrix a vyfikl ho z hlavy :D
pcmanik
Profil
tabulka uzivatelia
`id` SMALLINT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY,
`meno` VARCHAR( 15 ) NOT NULL,
`priezvisko` VARCHAR( 40 ) NOT NULL

tabulka spravy
`id` MEDIUMINT UNSIGNED NOT NULL AUTO_INCREMENT PRIMARY KEY,
`od` SMALLINT UNSIGNED NOT NULL,
`pre` SMALLINT UNSIGNED NOT NULL,
`sprava` text NOT NULL,
`cas` DATETIME NOT NULL

Výsledok po mojom dotaze je

Ako vravím, funguje to v podstate správne, až na to že to zobrazi prvu spravu v konverzácii a nie poslednú.

A tá tvoja poznámka ma veľmi pobavila, tiež mám niekedy ten pocit :D
Kcko
Profil
pcmanik:
A ty data si tam mam jako navkladat ruco jo? ;) Proste sem nebo nekam hod export kterej si u sebe pustim, abych to mohl vyzkouset a nedelal veci okolo a navic.
Kajman
Profil
Pokud mají novější zprávy vyšší id, tak by snad šlo něco jako

SELECT s.sprava,
       u1.meno,
       u1.priezvisko,
       u1.id,
       u2.meno,
       u2.priezvisko,
       u2.id
FROM   spravy s
       JOIN (SELECT Max(id) id
             FROM   (SELECT Max(id) id,
                            od      uziv
                     FROM   spravy
                     WHERE  pre = 1
                     GROUP  BY od
                     UNION ALL
                     SELECT Max(id) id,
                            pre     uziv
                     FROM   spravy
                     WHERE  od = 1
                     GROUP  BY pre) x
             GROUP  BY uziv) m
         ON s.id = m.id
       LEFT JOIN uzivatelia u1
              ON u1.id = s.od
       LEFT JOIN uzivatelia u2
              ON u2.id = s.pre
pcmanik
Profil
Kajman:
Funguje presne tak ako som si to predstavoval, ďakujem veľmi pekne :)

Kcko:
Prepáč, že som ti sem už nedal tie dáta, ale večer som musel ísť preč z PC.
Kcko
Profil
pcmanik:
V poho, neni treba dat kdyz je Kajman online :)

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: