eT` Posted August 8, 2011 Report Share Posted August 8, 2011 (edited) Balstoties uz ieteikto dinamiskā menu izveidi, man vajadzētu izdomāt SQL vaicājumu, kas ļautu saskaitīt kategorijā esošos ierakstus. Problēma slēpjas tur, ka vajadzētu arī saskaitīt to kategoriju ierakstus, kas ir zem šīs kategorijas. Bet princips šim menu ir līdzīgs kā `linked list` ar neierobežotu iespēju paplašināt/padziļināt. Kategoriju uzbūve SQL ID - NAME - PARENT_ID - LEVEL It kā šeit derētu kas līdzīgs binārā koka meklēšanas algoritmam, bet kā lai es izstaigāju visus kategoriju līmeņus? Varbūt izveidot lauku skaits un pie ieraksta pieveinošanas kategorijā +1 Bet atkal bus tā, ka lai saskaitītu būs jāiziet cauri visiem līmeņiem jāpaņem skaits un jāsaskaita ( tātad būtiski neatšķiras no COUNT(*) ) Esmu tiešām apjucis. Varbūt šī iemesla dēļ ( saskaitīšanas ) vajadzēja tomēr to dinamiskā menu sistēmu mazliet savādāku taisīt? Ja kāds saprata, tad varbūt Jums ir kāds ieteikums. EDIT: Laikam izdomāju tomēr. Pievienošu jaunu lauku skaits un pie pievienošanas būs jāizvēlas kategorijas, ja tai būs apakškategorijas tad jāizvēlas tā utt. un tad tos visus noseivošu $_POST un izpildīšu katram kvēriju, kas updeitos skaitu +1. ahhh plkst. 6. galva nedomājas vnk. Edited August 8, 2011 by eT` Quote Link to comment Share on other sites More sharing options...
Maris-S Posted August 8, 2011 Report Share Posted August 8, 2011 Cik sapratu Tu gribi katrai sadaļai dabūt tiešo apakšsadaļu skaitu, tādā gadījumā vari to izdarīt arī ar sql. SELECT node.*, (select count(id) from sections where parent_id = node.id limit 1) child_count FROM sections as node Quote Link to comment Share on other sites More sharing options...
codez Posted August 8, 2011 Report Share Posted August 8, 2011 Jā, glabā lauku skaits. Quote Link to comment Share on other sites More sharing options...
briedis Posted August 8, 2011 Report Share Posted August 8, 2011 Cik sapratu Tu gribi katrai sadaļai dabūt tiešo apakšsadaļu skaitu, tādā gadījumā vari to izdarīt arī ar sql. SELECT node.*, (select count(id) from sections where parent_id = node.id limit 1) child_count FROM sections as node Divu līmeņu gadījumā šis strādātu, bet te laikam būs gadījums, kad ir vairāki līmeņi. PS. Typo? :) SELECT field as field_alias FROM table table_alias SELECT field field_alias FROM table as table_alias Quote Link to comment Share on other sites More sharing options...
Maris-S Posted August 8, 2011 Report Share Posted August 8, 2011 (edited) Ne gluži, tas strādās jebkuram līmeņu skaitam. Šajā gadījumā viņš katrai sadaļai izvadīs tiešo apakšsadaļu skaitu, vienalga kādā dziļumā atrastos sadaļai, kurai tiek meklēts apakšsadaļu skaits. Vienīgi uzsvars ir uz "tiešo apakšsadaļu", tālāk uzskatāms piemērs, iekavās skaits. datortehnika (3) cpu (null) ram (null) hdd (null) optika (2) fotoaparāti (3) Nikon (null) Canon (null) Sony (null) objektīvi (null) programmatūra (3) os (null) office (null) security (2) antivirus (null) firewalls(null) Ja vajag visa apakškoka elementu skaitu iegūt, tad jāmeklē rekursīvi, vai jāsaglabā skaits pievienojot, dzēšot, labojot (pārvietojot) sadaļas. Apakškoka elementu skaitu domāju šādi. datortehnika (3) cpu (null) ram (null) hdd (null) optika (5) fotoaparāti (3) Nikon (null) Canon (null) Sony (null) objektīvi (null) programmatūra (5) os (null) office (null) security (2) antivirus (null) firewalls(null) Edited August 8, 2011 by Maris-S Quote Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.