Jump to content
php.lv forumi

SELECT nenostrādā


eT`

Recommended Posts

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 by eT`
Link to comment
Share on other sites

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

Link to comment
Share on other sites

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 by Maris-S
Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
×
×
  • Create New...