Pomoč SQL stavek
6 naročnikov
6 naročnikov
Zdravo!
Prosim za pomoč pri SQL stavku. Imam 3 tabele. Glavna tabela je tabela objave, kjer se shranjujejo objave uporabnikov. Druga in tretja sta tej tabeli podrejeni in se v prvo shranjujejo komentarji na te objave, v drugo pa ogledi teh objav. Moj namen je, da se mi v eni tabeli izpisuje po mesecih in letih sortirano število vseh objav nato pa še koliko unikatnih ljudi je komentiralo v tem mesecu in koliko unikatnih ljudi si je ogledalo objave v tem mesecu.
Takole imam sedaj, vendar mi prikazuje precej večje številke, kakor bi moralo biti.
SELECT
MONTH( FROM_UNIXTIME( statusi.datum ) ) AS mesec,
YEAR( FROM_UNIXTIME( statusi.datum ) ) AS year,
COUNT( statusi.id ) AS stevilo,
COUNT( distinct status_komentar.user_id) AS os_komentar,
COUNT( distinct status_ogled.user_id) AS os_ogled
FROM statusi
LEFT JOIN status_komentar ON statusi.id = status_komentar.status_id
LEFT JOIN status_ogled ON statusi.id = status_ogled.status_id
WHERE statusi.uporabnik_id = '1'
GROUP BY
MONTH( FROM_UNIXTIME( statusi.datum ) ) ,
YEAR( FROM_UNIXTIME( statusi.datum ) )
ORDER BY year DESC , mesec DESC
Torej problem je, da mi potem prikazuje večje številke v vseh poljih. Bi bil kdo toliko prijazen in mi pomagal?
Hvala!
11 odgovorov
drugače pa ja... kot je rekel blackmamba.. če ni preveč dela s popravljanjem, dodaj še omenjeni dve polji v tabelo statusov in pri vsaki spremembi naredi update statusi set ogledicount=ogledicount+1
tule je enostavno, ker ne brišeš zapisov, tako da je dejansko vedno samo +1... komplikacije nastanejo, če se določene stvari brišejo in je treba pazit, da kje ne pozabiš na apdejt parent tabele
lahko si pa v adminu narediš še gumb "sync count" pri urejanju statusov, tako da boš lahko tudi ročno posyncal število ogledov/komentarjev, če bi slučajno kje pozabil dati tisti apdejt (govorim iz lčastnih izkušenj.. take zadeve vedno prav pridejo)