Jump to content

SUBIECTE NOI
« 1 / 5 »
RSS
teava rezistenta panou apa calda

Sub mobila de bucatarie si sub fr...

Rezultat RMN

Numar circuite IPAT si prindere t...
 Pareri brgimportchina.ro - teapa ...

Lucruri inaintea vremurilor lor

Discuții despre TVR Sport HD

Cost abonament clinica privata
 Tremura toata, dar nu de la ro...

Renault Android

Recomandare bicicleta e-bike 20&#...

Bing-Content removal tool
 Nu pot accesa monitorulsv.ro de l...

Cum sa elimini urmele de acnee?

Wc Geberit

Routere detinute in trecut si in ...
 

MySQL - Selectare 5 produse din fiecare categorie

- - - - -
  • Please log in to reply
8 replies to this topic

#1
C-Andrei

C-Andrei

    New Member

  • Grup: Junior Members
  • Posts: 12
  • Înscris: 16.02.2016
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...

#2
tigerheart

tigerheart

    Savage Member

  • Grup: Senior Members
  • Posts: 9,815
  • Înscris: 07.08.2008
Adica asa https://stackoverflo...select-in-mysql ?

#3
C-Andrei

C-Andrei

    New Member

  • Grup: Junior Members
  • Posts: 12
  • Înscris: 16.02.2016
Nu. Nu așa.

Am nevoie de 5 rezultate din fiecare tabel, nu 5 rezultate din toate tabelele.

#4
_Smiley_

_Smiley_

    Guru Member

  • Grup: Senior Members
  • Posts: 19,979
  • Înscris: 24.02.2006
https://stackoverflo...r-each-category

#5
dani.user

dani.user

    Guru Member

  • Grup: Senior Members
  • Posts: 30,189
  • Înscris: 24.02.2007
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
OriginalCopy

OriginalCopy

    I'm harmful, fear me please! :))

  • Grup: Senior Members
  • Posts: 27,268
  • Înscris: 10.08.2006

View PostC-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.
Despre cate categorii vorbim? Ca solutia e diferita pentru 1, 10, 100, 1000 categorii.

Categoriile astea sunt si imbricate?

#7
C-Andrei

C-Andrei

    New Member

  • Grup: Junior Members
  • Posts: 12
  • Înscris: 16.02.2016
@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
_Smiley_

_Smiley_

    Guru Member

  • Grup: Senior Members
  • Posts: 19,979
  • Înscris: 24.02.2006

View PostC-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
romio79

romio79

    Active Member

  • Grup: Members
  • Posts: 1,655
  • Înscris: 30.03.2005
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

Chirurgia cranio-cerebrală minim invazivă 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

0 user(s) are reading this topic

0 members, 0 guests, 0 anonymous users

Forumul Softpedia foloseste "cookies" pentru a imbunatati experienta utilizatorilor Accept
Pentru detalii si optiuni legate de cookies si datele personale, consultati Politica de utilizare cookies si Politica de confidentialitate