View previous topic :: View next topic |
Author |
Message |
lekke
Joined: 17 Jun 2004 Posts: 860 Location: 25th floor
|
Posted: 30.11.2005 12:28 Post subject: PHP/MySQL/programerska logika - mala zavrzlama |
|
|
Tablica u MySQL bazi.
Polja: vijest, vrijeme objave, kategorija.
Izvlacim van sljedece:
- Zadnjih X objavljenih vijesti
- Zadnjih Y objavljenih vijesti po svakoj kategoriji, a da nisu izvucene u gornjih X vijesti
Vrijednosti X i Y doista nisu bitne za cijelu pricu.
E sad... problem je kako logicki to izvesti. Najvise bih volio da mogu stvar rijesit jednim queryjem, naprimjer koristeci "NOT IN" al MySQL jos nije dogurao do faze da se u subqueryima moze koristiti LIMIT a i operand u subq. moze sadrzavati samo 1 stupac*.
* htio sam imati id za usporedjivanje i vrijeme za soritranje. ne bih se usudio dohvacati samo vrijeme pa usporedjivati vremena objave vijesti, to ne smatram rock solid solucijom..
Ima'l ko kakvije ideja kud da to usmjerim? Cini mi se totalno blesavo radit petlju kroz koju cu provlacit jednu kategoriju at a time |
_________________ You need more bass. |
|
Back to top |
|
|
retro_one
Joined: 16 Sep 2003 Posts: 880 Location: DUBRAVA.
|
Posted: 30.11.2005 12:39 Post subject: |
|
|
hm...ja bi to najjednostavnije rjesio tak da prodjem kroz prvi recordset, pocupam id-eve i na temelju njih kreiram where uvjet za drugi kveri. |
_________________ Just your average eccentric programmer. |
|
Back to top |
|
|
Sulien
Joined: 04 Jan 2004 Posts: 2905 Location: Zagreb
|
Posted: 30.11.2005 12:40 Post subject: |
|
|
Što ja znam, izvuci X i dohvati nihove ID-ove u array XID
Nakon toga dohvati Y uz uvjet WHERE id <> XID[0] OR id <> XID[1] ... (naravno nećeš ručno traversat array nego ćeš ga implodeat ili neš)
Druga solucija bi bila ona koju će reć netko drugi i koja je 100 puta bolja od ove moje. Nisam više toliko u MySQL-u da se sjećam koje sve kombinacije idu a koje ne idu kod naprednijih subquery-a i sl. |
|
|
Back to top |
|
|
retro_one
Joined: 16 Sep 2003 Posts: 880 Location: DUBRAVA.
|
Posted: 30.11.2005 12:42 Post subject: |
|
|
mislim da fakat nema potrebe za subqueryem posto iovak radi prvi kveri...KISS |
_________________ Just your average eccentric programmer. |
|
Back to top |
|
|
lekke
Joined: 17 Jun 2004 Posts: 860 Location: 25th floor
|
Posted: 30.11.2005 13:03 Post subject: |
|
|
Sulien wrote: | Što ja znam, izvuci X i dohvati nihove ID-ove u array XID
Nakon toga dohvati Y uz uvjet WHERE id <> XID[0] OR id <> XID[1] ... (naravno nećeš ručno traversat array nego ćeš ga implodeat ili neš)
Druga solucija bi bila ona koju će reć netko drugi i koja je 100 puta bolja od ove moje. Nisam više toliko u MySQL-u da se sjećam koje sve kombinacije idu a koje ne idu kod naprednijih subquery-a i sl. |
OK, svi ste odgovorili na ovaj nacin, a i to mi je palo napamet, no stvar je u tome da u startu ima bar 5 kategorija i da taj broj moze rasti. Nekak mi je banana radit iteracije pa imat usporedbe za svaku kategoriju. [add] To je zlo po CPU a i na kraju response time od websitea.[/add]
Ovom cu rjesenju pribjec samo ako ne uspijem ispametovat neko rjesenje u obliku (niza) queryja. |
_________________ You need more bass. |
|
Back to top |
|
|
retro_one
Joined: 16 Sep 2003 Posts: 880 Location: DUBRAVA.
|
Posted: 30.11.2005 13:21 Post subject: |
|
|
where uvjet kreiras jednom i koristis u svakom od tih kverija. ne kuzim kaj je tu zahtjevno za CPU? |
_________________ Just your average eccentric programmer. |
|
Back to top |
|
|
lekke
Joined: 17 Jun 2004 Posts: 860 Location: 25th floor
|
Posted: 30.11.2005 13:58 Post subject: |
|
|
retro_one wrote: | where uvjet kreiras jednom i koristis u svakom od tih kverija. ne kuzim kaj je tu zahtjevno za CPU? |
Evo, rijesio na taj nacin. Ma, racunam da je processing 6 querya (za 5 kategorija) na razlicitim mjestima u kodu puno neefikasniji nacin osim poslat jednog upita na bazu i prikazat rezultat.
Hvala svima na inputu!! |
_________________ You need more bass. |
|
Back to top |
|
|
nel`chee
Joined: 08 Jul 2004 Posts: 2087 Location: Rijeka
|
|
Back to top |
|
|
carr
Joined: 13 Nov 2003 Posts: 1397 Location: Karlovac
|
Posted: 30.11.2005 15:33 Post subject: |
|
|
- ak sam dobro shvatio ti zelis prvih X i ovih ostalih Y sve dobiti u JEDNOM RECORDSETU?
- imas podatke koliko kategorija ima i koje su njihovi ID-evi prije nego sta saljes taj query? |
_________________ Bolje biti malo lud, nego malo pametan. |
|
Back to top |
|
|
Sulien
Joined: 04 Jan 2004 Posts: 2905 Location: Zagreb
|
Posted: 01.12.2005 18:09 Post subject: |
|
|
Ma neće jedan recordset, ali hoće optimizirat za brzinu |
|
|
Back to top |
|
|
|