Jump to content
php.lv forumi

MySQL - produktu skaits katrā kategorijā


ArnisR

Recommended Posts

Datubāzē ir kategoriju un produktu tabulas:

 

categories

category_id | category_name | parent_id

Kategoriju koka dziļums ir 2 līmeņi, un lauks parent_id satur vērtību 0, ja šai kategorijai nav parent'a.

 

products

product_id | category_id | product_name

Laukā category_id tiek norādīts dziļākās kategorijas ID.

 

Tagad nepieciešams vienā vaicājumā nolasīt visas kategorijas ar papildus lauku, kurš norādīs produktu skaitu. Ja tā ir child kategorija, tad attēlos visu produktu skaitu, kas tajā ietilpst, bet ja parent kategorija, tad visu child kategoriju produktu skaitu kopumā.

 

Pagaidām vaicājums izskatās šādi, bet tas, protams, neizskaitļo skaitu parent kategorijām, jo tās nekad neparādās produktu tabulā:

SELECT c.*, COUNT(*) AS total
FROM categories c
LEFT JOIN products p
ON c.category_id = p.category_id
GROUP BY c.category_id

 

 

Kāds būtu efektīvākais vaicājums, lai izskaitļotu produktu skaitu kategorijās šādai tabulu shēmai?

Paldies!

Link to comment
Share on other sites

Es izmantotu db kā vienkāršu persistant storage un biznesa loģiku nerakstītu SQLā un pie jauna produkta pievienošana/noņemšanas uztaisītu, ka aprēķina ietekmēto kategoriju produktu skaitus, kurus glabātu kategorijas tabulā atsevišķā laukā.

Edited by codez
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...