Forum » Programiranje » [mysql] group by in pogoji za izpis
[mysql] group by in pogoji za izpis
shorvat ::
Lep pozdrav,
imam tabelo v kateri so shranjeni komentarji. Če poenostavim, so v tabeli tri polja (id_rubrika, datum in komentar). Vaka rubrika lahko ima več komentarjev.
Rad bi izpisal najstarejši komentar iz vsake rubrike.
Mislim, da bo prava rešitev uporaba GROUP BY agregata, ampak mi zadeva ne uspe.
Primer napolnjene tabele:
Željeni izpis:
SQL stavek, ki sem ga navedel zgoraj pa vrne:
Se pravi, SQL stavek vrne samo komentarje pod pogojem, da ima rubrika izključno en komentar.
Prosim za pomoč,
hvala, Sašo
imam tabelo v kateri so shranjeni komentarji. Če poenostavim, so v tabeli tri polja (id_rubrika, datum in komentar). Vaka rubrika lahko ima več komentarjev.
Rad bi izpisal najstarejši komentar iz vsake rubrike.
Mislim, da bo prava rešitev uporaba GROUP BY agregata, ampak mi zadeva ne uspe.
SELECT * FROM komentarji GROUP BY id_rubrika HAVING datum=MIN(datum)
Primer napolnjene tabele:
---------------------------------------- | id_rubrika | datum | komentar | ---------------------------------------- | 1 | 2010-03-01 | oijoij | | 2 | 2010-03-02 | trfrdd | | 2 | 2010-03-03 | 8zzggf | | 1 | 2010-03-04 | 8ig65f | | 3 | 2010-03-05 | ttf6ff | ----------------------------------------
Željeni izpis:
---------------------------------------- | id_rubrika | datum | komentar | ---------------------------------------- | 1 | 2010-03-01 | oijoij | | 2 | 2010-03-02 | trfrdd | | 3 | 2010-03-05 | ttf6ff | ----------------------------------------
SQL stavek, ki sem ga navedel zgoraj pa vrne:
---------------------------------------- | id_rubrika | datum | komentar | ---------------------------------------- | 3 | 2010-03-05 | ttf6ff | ----------------------------------------
Se pravi, SQL stavek vrne samo komentarje pod pogojem, da ima rubrika izključno en komentar.
Prosim za pomoč,
hvala, Sašo
shorvat ::
Mi je uspelo rešiti problem
Če kdo pozna bolj optimalen SQL za ta problem, se priporočam.
Hvala, Sašo
SELECT * FROM komentarji k JOIN (SELECT id_rubrika, MIN(datum) as dm FROM komentarji GROUP BY id_rubrika) kk USING (id_rubrika) WHERE k.datum=kk.dm
Če kdo pozna bolj optimalen SQL za ta problem, se priporočam.
Hvala, Sašo
Zgodovina sprememb…
- spremenil: shorvat ()
PureHemp ::
Mislim, da je tale veliko bolj optimalen :)
SELECT * FROM komentarji GROUP BY id_rubrika ORDER BY id_rubrika ASC, datum DESC;
LP,
P
SELECT * FROM komentarji GROUP BY id_rubrika ORDER BY id_rubrika ASC, datum DESC;
LP,
P
shorvat ::
Hvala,
ampak tako ne bo šlo, ker lahko uporabniki datum vpisa sami nastavijo (v resnici ne gre za tabelo komentarji). To tabelo sem navedel, ker sem hotel poenostavil celotno zadevo, ampak sem pozabil omeniti ključen podatek (da lahko datum uporabnik sam nastavi), zato urejanje po polju "id_rubrika" odpade.
Se opravičujem za pomankljivo opisan problem.
Hvala, Sašo
ampak tako ne bo šlo, ker lahko uporabniki datum vpisa sami nastavijo (v resnici ne gre za tabelo komentarji). To tabelo sem navedel, ker sem hotel poenostavil celotno zadevo, ampak sem pozabil omeniti ključen podatek (da lahko datum uporabnik sam nastavi), zato urejanje po polju "id_rubrika" odpade.
Se opravičujem za pomankljivo opisan problem.
Hvala, Sašo
Vredno ogleda ...
Tema | Ogledi | Zadnje sporočilo | |
---|---|---|---|
Tema | Ogledi | Zadnje sporočilo | |
» | SQL vprasanje (strani: 1 2 )Oddelek: Programiranje | 8344 (5023) | BivšiUser2 |
» | [SQL] - PoizvedbaOddelek: Programiranje | 860 (630) | tx-z |
» | [SQL] - združitev glede na iste vrednostiOddelek: Programiranje | 1390 (1032) | tx-z |
» | Normalizirana struktura - queryOddelek: Programiranje | 1720 (1340) | frudi |
» | sql select stavekOddelek: Programiranje | 1465 (1367) | zavajon |