Chirurgia cranio-cerebrală minim invazivă
Tehnicile minim invazive impun utilizarea unei tehnologii ultramoderne. Endoscoapele operatorii de diverse tipuri, microscopul operator dedicat, neuronavigația, neuroelectrofiziologia, tehnicile avansate de anestezie, chirurgia cu pacientul treaz reprezintă armamentarium fără de care neurochirurgia prin "gaura cheii" nu ar fi posibilă. Folosind tehnicile de mai sus, tratăm un spectru larg de patologii cranio-cerebrale. www.neurohope.ro |
MySQL - Selectare 5 produse din fiecare categorie
Last Updated: May 29 2017 11:35, Started by
C-Andrei
, May 27 2017 08:56
·
0
#1
Posted 27 May 2017 - 08:56
Salutare!
O să iau exemplul unor produse și categorii. Există coloana product_category_id în tabelul products și category_id în tabelul categories. Acum, vreau să selectez toate categoriile și câte 5 produse din fiecare categorie. De exemplu, dacă am cateogoriile cu id-urile 1, 2, 3, atunci vreau să extrag: 5 produse unde product_category_id = 1 5 produse unde product_category_id = 2 5 produse unde product_category_id = 3 Dacă una din categorii are decât 4 produse, e ok. Să le scoată pe alea 4. PS: Am tot căutat pe net, dar nu-mi dă ce-mi trebuie. Am impresia că nu caut cum trebuie... |
#3
Posted 27 May 2017 - 09:41
Nu. Nu așa.
Am nevoie de 5 rezultate din fiecare tabel, nu 5 rezultate din toate tabelele. |
#5
Posted 27 May 2017 - 09:54
Interogari separate pentru fiecare categorie sau o procedura stocata ce construieste un query masiv cu union all?
In Postgresql de exemplu ai functii speciale pentru asa ceva https://robots.thoug...indow-functions (si e mult mai capabil si chiar mai gratis decat jucaria de mysql) Edited by dani.user, 27 May 2017 - 09:58. |
#6
Posted 27 May 2017 - 11:23
C-Andrei, on 27 mai 2017 - 08:56, said:
Salutare! O să iau exemplul unor produse și categorii. Există coloana product_category_id în tabelul products și category_id în tabelul categories. Acum, vreau să selectez toate categoriile și câte 5 produse din fiecare categorie. Categoriile astea sunt si imbricate? |
#7
Posted 27 May 2017 - 15:42
@Smiley, am ajuns și la acel query înainte de a posta aici, dar mi s-a părut cam "ambigue" pentru ce vreau eu...
@dani, mi se pare așa de simplu query-ul pe care îl vreau încât mi se pare prea mult să fac o procedură. Mă interesa un query simplu. @OC, nu. Sunt categorii simple, generale, fără sub-categorii etc. Edited by C-Andrei, 27 May 2017 - 15:42. |
#8
Posted 27 May 2017 - 19:58
C-Andrei, on 27 mai 2017 - 15:42, said:
@Smiley, am ajuns și la acel query înainte de a posta aici, dar mi s-a părut cam "ambigue" pentru ce vreau eu...... pai face fix ce vrei tu. daca nu-ti place si vrei ceva mai simplu, cauta un SGBD care stie "RANK ... OVER PARTITION...ORDER BY". ti s-a dat mai sus un exemplu (postgresql), SQL Server stie si el asa ceva (de la versiunea 2012 in sus stie chiar mai multe pe tema asta)... |
#9
Posted 29 May 2017 - 11:35
se poate face variabila aia sau fara limit si union all, dar alea sunt variante mai rapide, probabil varianta cu variabila ar fi cea mai buna.
Daca preferi varianta lenta, cam asta ar fi (presupun ca tablelul products are un id numit product_id ) SELECT t1.product_category_id, t1.product_id FROM products t1 LEFT JOIN products t2 ON t1.product_category_id = t2.product_category_id AND t2.product_id < t1.product_id GROUP BY t1.product_category_id, t1.product_id HAVING COUNT(t2.product_id) < 5 |
Anunturi
▶ 0 user(s) are reading this topic
0 members, 0 guests, 0 anonymous users