Autor | Zpráva | ||
---|---|---|---|
XazGa Profil * |
#1 · Zasláno: 25. 11. 2007, 17:32:31
Mam 3 tabulky
user (id, username) temy (id, nazovtemy) prispevky(id, idtema, prispevok, meno, datum) A ja chcem vo vypise vsetky temy a zoradene od Posledneho prispenia a kto mu aj meno kto posledny prispel Ako na to? Mam zatial takto: SELECT u.username, t.*, date_format(t.datum, "%d/%m/%Y %H:%i")temdatum FROM temy t LEFT JOIN user u on t.iduser = u.id ORDER by ??? Poradite? |
||
Kajman_ Profil * |
#2 · Zasláno: 25. 11. 2007, 20:32:49
Zkuste např.
SELECT u.username, t.*, date_format(t.datum, "%d/%m/%Y %H:%i")temdatum FROM temy t LEFT JOIN user u on t.iduser = u.id left join prispevky p on t.id=p.idtema where p.id in (select max(p2.id) from prispevky p2 group by p2.idtema) ORDER by p.id desc |
||
XazGa Profil * |
#3 · Zasláno: 25. 11. 2007, 20:43:52
No vyzera, ze funguje a pod cim bude posledny prispievajuci?
Lebo ja chcem vypisat Zakladatela temy a zaroven posledeho pripievaneho.. Da sa to? |
||
Kajman_ Profil * |
#4 · Zasláno: 25. 11. 2007, 20:49:40
pod cim bude posledny prispievajuci
p.meno |
||
XazGa Profil * |
#5 · Zasláno: 26. 11. 2007, 14:00:19
OK, ale mam este problem ani za svet neviem ako opravit to tak aby tam slo zobrazit Pocet prispevkov k jednotlivym tematam
SELECT u.username, t.*, date_format(t.datum, "%d/%m/%Y %H:%i")temdatum, count(p.id) as pocet_prispevkov FROM temy t LEFT JOIN user u on t.iduser = u.id left join prispevky p on t.id=p.idtema where p.id in (select max(p2.id) from prispevky p2 group by p2.idtema) ORDER by p.id desc A malo by to ist ale nejde lebo stale pise 1 :((( Ako to opravit? |
||
Kajman_ Profil * |
#6 · Zasláno: 26. 11. 2007, 14:06:18
(select count(p3.id) from prispevky p3 where p3.idtema=t.id) as pocet_prispevkov
|
||
XazGa Profil * |
#7 · Zasláno: 26. 11. 2007, 14:14:00
Pockaj a to mam dat teraz do coho?
SELECT u.username, t.*, date_format(t.datum, "%d/%m/%Y %H:%i")temdatum, (select count(p3.id) from prispevky p3 where p3.idtema=t.id) as pocet_prispevkov FROM temy t LEFT JOIN user u on t.iduser = u.id left join prispevky p on t.id=p.idtema where p.id in (select max(p2.id) from prispevky p2 group by p2.idtema) ORDER by p.id desc Tak?? diky |
||
XazGa Profil * |
#8 · Zasláno: 26. 11. 2007, 14:15:43
ide to ;)) duky ale nedalo by sa to aj inak ako so select?
|
||
Kajman_ Profil * |
#9 · Zasláno: 26. 11. 2007, 21:30:31
ale nedalo by sa to aj inak ako so select?
Způsobů, jak něco v sql popsat je často víc. Můžete si zkusit to napsat klidně jinak nebo je mít předpočítané. Také se můžete podívat např. do zdrojáků minibb (běží na tom tato diskuse) třeba to řeší líp. Pokud tam máte použitý limit, tak na počet příspěvků bych použil asi ten poddotaz, jak to máte v poslední verzi. |
||
Časová prodleva: 3 dny
|
|||
asdAA Profil * |
#10 · Zasláno: 29. 11. 2007, 22:33:11
OK, este mam jeden problem v tom dotaze:
Ak nahodou tema nema ziaden prispevok tak sa nevypise a ja chcem aj take vypisat. Da sa to lahko v tomto upravit? Pozeram na to a nic ma nenapada.... |
||
Kajman_ Profil * |
#11 · Zasláno: 29. 11. 2007, 22:42:24
možná
left join prispevky p on t.id=p.idtema and p.id in (select max(p2.id) from prispevky p2 group by p2.idtema) |
||
asdAA Profil * |
#12 · Zasláno: 29. 11. 2007, 22:57:00
Super, ide :o) diky machre
Ale trocha ma stve, ze potom je dany az uuplne na koniec ale zrejme to je aj dobre...neviem. |
||
Kajman_ Profil * |
order by ifnull(p.datum,t.datum) desc
|
||
Časová prodleva: 16 let
|
0