Pagina 1 din 3 123 UltimulUltimul
Rezultate 1 la 10 din 26

Subiect: SQL primul produs din fiecare categorie

  1. #1
    Avatarul lui big
    big
    big este deconectat Ambasador
    Reputatie:
    36
    Data înscrierii
    13th July 2007
    Locaţie
    Bucuresti
    Vârstă
    43
    Posturi
    864
    Putere Rep
    36


    Implicit SQL primul produs din fiecare categorie

    Am un tabel cu sute de produse.
    De forma: ID | produs | categorie
    Sunt 10 categorii.

    Cum pot sa scot intr-un querry ultimele 10 produse introduse, dar categoria sa fie distincta. Adica ultimul produs introdus in fiecare categorie.

    Am incercat si cu MAX, WHERE IN () si cu DISTINCT si nu mi-a iesit. DISTINCT e cel mai apropiat dar nu pot sa scot decat cate un camp cu el (adica doar categoriile distincte dar fara id sau detalii).

    Exista vre-o posibilitate sa folosesc DISTINCT selectiv, doar dupa categorie?
    Adica ceva de genul SELECT id_produs, detalii DISTINCT categorie ORDER BY id_produs DESC LIMIT 0,10;

    Sau alta metoda? Nu vreau sa fac 10 querry-uri.

    Multumesc anticipat.
    Those were fast strange times and we worked in fast strange ways.

  2. #2
    Avatarul lui SorinCh
    SorinCh este deconectat Junior SeoPedia
    Reputatie:
    0
    Data înscrierii
    13th May 2008
    Locaţie
    Bucuresti
    Posturi
    10
    Putere Rep
    0


    Implicit

    Incearca cu urmatorul select

    Cod:
    select p.* 
    from produse p
    join (select categorie, max(data_introducerii) from produse group by categorie) cat 
    on p.categorie = cat.categorie and p.data_introducerii = cat.data_introducerii

  3. #3
    Avatarul lui Butcher
    Butcher este deconectat Membru SeoPedia
    Reputatie:
    33
    Data înscrierii
    15th June 2007
    Locaţie
    Constanta
    Vârstă
    43
    Posturi
    308
    Putere Rep
    33


    Implicit

    Cod:
    SELECT DISTINCT(categorie) AS categorie, produse.* 
    FROM produse GROUP BY categorie 
    ORDER BY id DESC 
    LIMIT 0,10
    P.S.: Query nu querry...ai scris de 2x asa deci nu mai e typo
    Ultima modificare făcută de Butcher; 7th June 2010 la 16:25.

  4. #4
    Avatarul lui big
    big
    big este deconectat Ambasador
    Reputatie:
    36
    Data înscrierii
    13th July 2007
    Locaţie
    Bucuresti
    Vârstă
    43
    Posturi
    864
    Putere Rep
    36


    Implicit

    Sorin, nu sunt asa avansat in SQL ca sa inteleg. Daca nu ma descurc in alt fel o sa incerc si abordarea ta. Apreciez raspunsul, totusi.

    Butcher, e foarte aproape de ce vroiam, doar ca in loc sa-mi scoata produsele cu cel mai mare ID le scoate pe cele cu cel mai mic id, din fiecare categorie. Order by id face cu totul altceva.

    A si distinct e cu paranteze? ca la mine nu vrea decat fara paranteze. Iar rezultatul e acelasi cu GROUP BY.

    Query nu querry...ai scris de 2x asa deci nu mai e typo
    ha ha ha, made my day...mai ales cu smile-ul cel serios. Imi fac autocritica si nu o sa se mai repete o asemenea grava eroare.
    Those were fast strange times and we worked in fast strange ways.

  5. #5
    Avatarul lui Butcher
    Butcher este deconectat Membru SeoPedia
    Reputatie:
    33
    Data înscrierii
    15th June 2007
    Locaţie
    Constanta
    Vârstă
    43
    Posturi
    308
    Putere Rep
    33


    Implicit

    brb
    Ultima modificare făcută de Butcher; 7th June 2010 la 18:43.

  6. #6
    Avatarul lui Iulian
    Iulian este deconectat Membru SeoPedia
    Reputatie:
    35
    Data înscrierii
    30th January 2008
    Locaţie
    Bucuresti
    Posturi
    552
    Putere Rep
    35


    Implicit

    nu stiu daca merge , dar mi-a venit acum pe moment :
    Cod:
    SELECT * FROM baza WHERE categorie='categorie' ORDER BY id_produs ASC LIMIT 10
    “Stop Doubting Yourself, Work Hard and Make It Happenµ
    Imi place sa conduc si sa gasesc cele mai bune distante rutiere.

  7. #7
    Avatarul lui Ciprian.Olaru
    Ciprian.Olaru este deconectat Membru SeoPedia
    Reputatie:
    0
    Data înscrierii
    6th August 2007
    Locaţie
    Bucuresti
    Posturi
    573
    Putere Rep
    0


    Implicit

    acel order by id face sortarea tabelei finite (dupa ce se aplica group by) si de asta pare sa nu functioneze;

    un posibil indiciu aici: http://dev.mysql.com/doc/refman/5.0/...group-row.html

  8. #8
    Avatarul lui Butcher
    Butcher este deconectat Membru SeoPedia
    Reputatie:
    33
    Data înscrierii
    15th June 2007
    Locaţie
    Constanta
    Vârstă
    43
    Posturi
    308
    Putere Rep
    33


    Implicit

    mda, eram in graba, am uitat ca sortarea se aplica asupra rezultatelor ramase dupa WHERE/GROUP BY/etc

    asa ar tb sa fie ok

    Cod:
    SELECT MAX(id_produs), id_cat
    FROM t_produse
    GROUP BY id_cat
    ORDER BY MAX(id_produs) DESC
    LIMIT 0, 10

  9. #9
    Avatarul lui Ciprian.Olaru
    Ciprian.Olaru este deconectat Membru SeoPedia
    Reputatie:
    0
    Data înscrierii
    6th August 2007
    Locaţie
    Bucuresti
    Posturi
    573
    Putere Rep
    0


    Implicit

    queryul asta ar trebui sa functioneze doar pentru a returna lista de iduri pentru produsele cautate;
    am un "bad feeling" ca nu suporta adaugarea a unei alte coloane langa (va scoate corect idurile cele mai recente din fiecare categorie, dar numele va fi in continuare al primului produs adaugat in acea categorie);

    stiu ca am avut problema asta la un moment dat si solutia a fost sa fac un "select in select" ca sa o pot rezolva (un select era chiar asta si altul era un select standard pe tabela care "se hranea" cu multimea rezultata aici - parca sintaxa era cu select . from tabela where id in (select....) );

    pot sa incerc o rezolvare concreta daca imi dai un fisier sql cu cateva randuri reale de tabel;

    am presupus aici ca numarul de categorii din sistem este de exact 10.. alfel situatia se complica pentru ca trebuie si un limit pe undeva


    Citat Postat în original de Butcher Vezi Post
    mda, eram in graba, am uitat ca sortarea se aplica asupra rezultatelor ramase dupa WHERE/GROUP BY/etc

    asa ar tb sa fie ok

    Cod:
    SELECT MAX(id_produs), id_cat
    FROM t_produse
    GROUP BY id_cat
    ORDER BY MAX(id_produs) DESC
    LIMIT 0, 10

  10. #10
    Avatarul lui Butcher
    Butcher este deconectat Membru SeoPedia
    Reputatie:
    33
    Data înscrierii
    15th June 2007
    Locaţie
    Constanta
    Vârstă
    43
    Posturi
    308
    Putere Rep
    33


    Implicit

    Citat Postat în original de gabriel.stancu Vezi Post
    queryul asta ar trebui sa functioneze doar pentru a returna lista de iduri pentru produsele cautate
    intr-adevar, pt a afla totul tb subquery...

    Cod:
    SELECT * FROM t_produse WHERE id_produs IN(
    SELECT MAX(id_produs)
    FROM t_produse
    GROUP BY id_cat) ORDER BY id_produs DESC LIMIT 0, 10
    solutia asta, totul intr-un singur query e lenta pe o tabela cu mii de produse, ori se face caching la ea ori se sparge in bucati. Si nu merge pe mySQL 3.xx, parca tb macar > 4.1
    Ultima modificare făcută de Butcher; 7th June 2010 la 21:22.

Pagina 1 din 3 123 UltimulUltimul

Informații subiect

Utilizatori care navighează în acest subiect

Momentan este/sunt 1 utilizator(i) care navighează în acest subiect. (0 membrii și 1 vizitatori)

Thread-uri Similare

  1. Recomandare CMS prezentare produs
    De RoManiac în forumul Comert electronic, e-Commerce
    Răspunsuri: 7
    Ultimul Post: 16th February 2010, 15:48
  2. Cum pun un produs sa apara in 2 subcategorii diferite ?
    De evolution în forumul Client side
    Răspunsuri: 6
    Ultimul Post: 3rd March 2009, 14:44
  3. SEO produs software
    De ddines în forumul Locuri de munca
    Răspunsuri: 4
    Ultimul Post: 30th March 2007, 13:34
  4. Produs Testat - Seo Elite
    De vladimir în forumul SEO Soft
    Răspunsuri: 18
    Ultimul Post: 10th December 2006, 18:50
  5. Primul si PRIMUL mouse
    De Cristian Mezei în forumul Bar, lobby...
    Răspunsuri: 2
    Ultimul Post: 24th October 2006, 09:16

Permisiuni postare

  • Nu puteţi posta subiecte noi.
  • Nu puteţi răspunde la subiecte
  • Nu puteţi adăuga ataşamente
  • Nu puteţi modifica posturile proprii
  •