Jump to content
php.lv forumi

Sarežģītāka grupēšana


Lynx

Recommended Posts

Forumam ir nepieciešams upgreids un sāku strādāt pie Announcement(1), Sticky(2), Locked(3) un normal(4) sistēmas izveides. Ir enum lauks type kurā mēs tad norādam lauka tipu.

 

Cik saprotu ir 2as iespējas. Mēs ar vienu pieprasījumu izvelkam visus datus, sagrupējam 1 ar 2 kopā un sortojam pēc tipa, lai augša būtu Announcements. Un tad sagrupējam 3 ar 4 un tie vienkārši šķirojas pēc last post date.

2ais būtu taisīt 2us atsevišķus pieprasījumus. vienu priekš 1 un 2 otru priekš 3 un 4, cik papētiju kodu šādi to dara phpbb.

 

Tad jautājums kurš ir labāks 1ais vai otrais variants skatoties no izpildes ātruma un db noslodzes. 2o es uztaisītu bez problēmām, bet kā veikt 1ajā pieminēto grupēšanu nav ne jausmas. Jaņem vērā fakts, ka topiku izvadē vēl tiek taisīts left joins, lai pievienotu info vai šis konkrētais topiks ir izlasīts vai nav.

Link to comment
Share on other sites

Nu tajā vienā kverijā taisi ORDER BY tips, datums. Tad tie ieraksti sakārtosies vispirms pēc tipa, un katrā tipā pēc datumiem. Ejot cauri masīvam salīdzināsi, vai iepriekšējā ieraksta tips sakrīt ar tekošā, un ja nē, tad sāksi jaunu to sadaļu.

Link to comment
Share on other sites

taa gluzi nederees - 3 un 4 tipa ierakstus vinjam vajag kopaa vienaa grupaa un sorteet peec datuma.

 

vai nu unioni, vai nu selectaa ievies maaksligu tipa lauku ( if(...) as kautkas) , kursh ir 1 pirmajam tipam, 2 otrajam tipam un 3 paarejiem tipiem, tad sortee peec `maaksliigaa tipa` lauka, bet iisti labs nav ne viens ne otrs variants laikam.

Link to comment
Share on other sites

Jā šāds variants darbojas. Tikai locked nāk pirms parastajiem, kautgan viņiem būtu jajaucas. Bet pēc idejas šādi pat ir labāk, vienkārši locked tiks uztaisīts atsevišķs lauks enum('0','1') un tad arii sticky un announcementus varees nolockot. Sākumā bija ideja apvienot zem viena. Paldies.

Link to comment
Share on other sites

Es būtu ieviesis 2 laukus.

 

1 announcement/sticky

2 locked/open

 

Attiecīgi nolasām no tabulas visus kam ir announcement/sticky uzstādīts un pēc tam kaut vai ar UNION pielasām klāt pārējos ierakstus, sakārtotus pēc datuma, kurus atkarībā no locked/open stāvokļa attiecīgi arī atzīmējam.. ;)

Link to comment
Share on other sites

×
×
  • Create New...