ArnisR Posted April 20, 2013 Report Share Posted April 20, 2013 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! Quote Link to comment Share on other sites More sharing options...
marrtins Posted April 20, 2013 Report Share Posted April 20, 2013 Personīgi es ieviestu trigerus, kas pie atbilstošām datu izmaiņām saskaita skaitu un noglabā. Quote Link to comment Share on other sites More sharing options...
codez Posted April 20, 2013 Report Share Posted April 20, 2013 (edited) 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 April 20, 2013 by codez 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.