• 10 odgovora
  • 2.713 pregleda
malo kompliciraniji mysql upit 27.10.2005. u 21:50 · pre 255 meseci #1
dakle ovako imam ovaj upit kod foruma kojeg izrađujem

"SELECT id,naslov FROM forum WHERE kategorija='$k' AND sub_id=0 ORDER BY vrijeme DESC"

ovaj kod šljaka super no imam jedan problem evo da vam malo dočaram situaciju:

sub_id ustvari označava o čemu se radi ukoliko je sub_id=0 riječ je o TEMI a ukoliko je neki drugi broj npr 5 tada je to odgovor na temu kojoj je id=5

e sad šta ja hoću je proširiti ovaj upit tako da se sve poreda po vremenu (kao sada) ALI da se uzmu u obzir i ODGOVORI a ne samo TEME dakle netko dođe na sajt i otvori neku starju temu koja je na dnu liste i odgovori na nju ŽELIM da se ta tema automatski smjesti na vrh (ista stvar je i kod ovog foruma) dakle kako ovo izvesti mislim da se može sa čistim mysql-om al nisam siguran a i nisam takav expert za mysql! hvala svima!
Re: malo kompliciraniji mysql upit 27.10.2005. u 22:27 · pre 255 meseci #3
ije opet tako jednostavno mislim mogu onda sa php-om obraditi rezultate al ja sam namjeravao da mi vrati van samo teme šta ću sa odgovorima kad je to stranica na kojoj se ispisuju teme dobro to sam mislio upotrijebiti ako ne postoji bolje riješenje u svakom slučaju hvala!
Re: malo kompliciraniji mysql upit 28.10.2005. u 00:23 · pre 255 meseci #4
Probaj nešto ovako
Code:
SELECT DISTINCT
    tema.id AS tema_id,
    tema.naslov AS tema_naslov
FROM
    forum AS tema,
    forum AS poruka
WHERE
    tema.kategorija = '$k' AND
    tema.sub_id = 0 AND
    (
        poruka.sub_id = tema.id OR
        poruka.id = tema.id
    )
ORDER BY poruka.vrijeme DESC
LIMIT $od, $do
Potpis
BoxUp
interesantna logička igra
Monty Hall paradoks - interaktivni demo
Re: malo kompliciraniji mysql upit 28.10.2005. u 10:06 · pre 255 meseci #5
ne,neradi nažalost
dakle ovako
i teme i odgovori su u istoj tabeli to je jasno.

al ja van hoću samo dobit teme na osnovu vremena zadnjeg odgovora ili ukoliko nema odgovora onda na osnovu vremena teme
i u temama i u odgovorima uvijek su sva polja popunjena!
dakle imamo
Code:

 id         sub_id         naslov         poruka         autor         vrijeme          kategorija

1         0              nova tema1       poruka          ---              100       nijebitno

2         0            nova tema2       poruka          autor               101         nijebitno


dakle sad bi se posložile ovak najprije bi išla nova tema2 mpa onda nova tema1
sao onim upitom i to je ok
al sad imamo recimo ovo
Code:

 id         sub_id         naslov         poruka         autor         vrijeme          kategorija

1         0              nova tema1       poruka          ---              100       nijebitno

2         0            nova tema2       poruka          autor               101         nijebitno

3         1           re:nova tema1       poruka          autor             105         nijebitno


i sad automatski da mi
bude
nova tema1
nova tema1

jer je odgovor na temu1 postan kasnije nego je postavljena tema2
Re: malo kompliciraniji mysql upit 28.10.2005. u 10:38 · pre 255 meseci #6
Meni je struktura te tabele nekako zbunjujuca i ne cini mi se bas efikasnom...
Zasto u sub_id smjestas i id teme i id odgovora? Ja bih to razdvojio i povezao agregatnom tabelom...

Kada bi imao razdvojene ID-ove od tema i odgovora, onda bi mogao da ubacis
Code:
GROUP BY tema_id
ORDER BY vrijeme DESC

u svoj upit...
Potpis
Blog - baze podataka
---------------------
Oracle OCP DBA (9i & 10g)
Oracle Database: SQL Certified Expert
Oracle OCP Developer
Certified MySQL DBA
Re: malo kompliciraniji mysql upit 28.10.2005. u 10:49 · pre 255 meseci #7
[qoute]Zasto u sub_id smjestas i id teme i id odgovora?
[/quote]
ne smještam nikakav id odgovora!
ukoliko je sub_id=0 znam automatski da je riječ o temi a ukoliko nije onda je riječ o odgovoru na temu sa jednakim id-em kao ovaj sub_id!

a sad mi se neda to sve preispravljati puno je to posla! jako puno
nešto konkretno
Re: malo kompliciraniji mysql upit 28.10.2005. u 10:56 · pre 255 meseci #8
Cek, cek...
Citat:
ne smještam nikakav id odgovora!
ukoliko je sub_id=0 znam automatski da je riječ o temi a ukoliko nije onda je riječ o odgovoru
Kako ne smjestas, kad si upravo jos jednom potvrdio, da smjestas id zavisno da li je rijec o temi ili odgovoru!?

Konkretno sam ti rekao da odvojis to i da koristis onda GROUP BY. Sta konkretnije jos da ti kazem?

Kazes da ti je to puno posla? To je 10-20 minuta vremena. Da je i par sati, opet ce ti se isplatiti.
Ako si lijen, pa ti se ne da, to je vec druga stvar... Mozda postanu i lijeni, oni koji bi ti mozda dali odgovor...
Potpis
Blog - baze podataka
---------------------
Oracle OCP DBA (9i & 10g)
Oracle Database: SQL Certified Expert
Oracle OCP Developer
Certified MySQL DBA
Re: malo kompliciraniji mysql upit 28.10.2005. u 11:08 · pre 255 meseci #9
ako nećeš da razdvajaš, promeni taktiku... ček malo da ti je pripremim...

update forum set sub_id = id where sub_id = 0

pa ti je sada spisak vodećih poruka teme...

select * from forum where sub_id = id

umesto

select * from forum where sub_id = 0

nije strašna razlika, zar ne?

[Ovu poruku je menjao noviKorisnik dana 28.10.2005. u 12:11 GMT+1]

e da, dalje ne znam :-)

[Ovu poruku je menjao noviKorisnik dana 28.10.2005. u 12:15 GMT+1]
Potpis
BoxUp
interesantna logička igra
Monty Hall paradoks - interaktivni demo
Re: malo kompliciraniji mysql upit 28.10.2005. u 11:52 · pre 255 meseci #10
Citat:
noviKorisnik: update forum set sub_id = id where sub_id = 0

Hehe, to je i meni palo na pamet.

Onda će običan GROUP BY sub_id rešiti stvar.
Prijavite se da biste odgovorili u ovoj temi.PrijavaRegistracija

Premeštanje teme