Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.

lista kateogrija sa po n najpopularnijih proizvoda, podkategorija...

[es] :: MySQL :: lista kateogrija sa po n najpopularnijih proizvoda, podkategorija...

[ Pregleda: 5695 | Odgovora: 10 ] > FB > Twit

Postavi temu Odgovori

Autor

Pretraga teme: Traži
Markiranje Štampanje RSS

Guardian OfThe Blind
Beograd

Član broj: 1048
Poruke: 78
62.193.130.*



Profil

icon lista kateogrija sa po n najpopularnijih proizvoda, podkategorija...12.05.2004. u 20:37 - pre 193 meseci
Da li je moguće jednim upitom izvesti ovakvu selekciju koja se često viđa po netu...

Kat1
elem1,elem2,elem3
Kat2
elem4,elem5,elem6
...

Neka tabela elemenata ima na primer samo Id,Kat i Brojac polja, znači trebaju mi po npr 3 elementa sa najvećim Brojačem iz svake kategorije.
 
Odgovor na temu

Dejan Topalovic
Dejan Topalović
Senior Oracle DBA & Senior PL/SQL
Developer, Erste Sparinvest (Erste
Bank), Vienna, Austria
Vienna

Član broj: 635
Poruke: 1374
*.1.14.vie.surfer.at

Sajt: www.baze-podataka.net


+2 Profil

icon Re: lista kateogrija sa po n najpopularnijih proizvoda, podkategorija...12.05.2004. u 21:00 - pre 193 meseci
A gdje su tu elem1, elem2 i td.? Moram priznati da te nisam bas najjasnije razumio. Da li mozes pitanje detaljnije i konkretnije obrazloziti? Dodaj usput svoju postojecu strukturu baze, da vidimo kako si zamislio to i na sta ciljas tacnije.
Blog - baze podataka
---------------------
Oracle OCP DBA (9i & 10g)
Oracle Database: SQL Certified Expert
Oracle OCP Developer
Certified MySQL DBA
 
Odgovor na temu

Guardian OfThe Blind
Beograd

Član broj: 1048
Poruke: 78
195.178.35.*



Profil

icon Re: lista kateogrija sa po n najpopularnijih proizvoda, podkategorija...12.05.2004. u 21:48 - pre 193 meseci
2 tabele su u pitanju:

tabela kategorije sa poljima: IdK int(10),ImeK varchar(40)
i tabela elementi sa poljima: IdE int(10),Kat int(10),ImeE varchar(40),Brojac int(10)
gde je Kat id kategorije kojoj element pripada.

Zelim da izlistam sva imena kategorija i uz svaku kategoriju po, na primer, 3 elementa koja imaju najveci Brojac u svojoj kategoriji. Zanima me kako ovo da uradim bez upita u petlji i po mogucstvu bez selektovanja svih elemenata i parsiranja u php.u mada mi se ovo drugo sve vise smesi...
 
Odgovor na temu

Dejan Topalovic
Dejan Topalović
Senior Oracle DBA & Senior PL/SQL
Developer, Erste Sparinvest (Erste
Bank), Vienna, Austria
Vienna

Član broj: 635
Poruke: 1374
*.1.14.vie.surfer.at

Sajt: www.baze-podataka.net


+2 Profil

icon Re: lista kateogrija sa po n najpopularnijih proizvoda, podkategorija...13.05.2004. u 00:31 - pre 193 meseci
Nisam siguran da li je to izvedivo u jednom query-u. Mozda ako pokusas odraditi to sa subquery-em, sto je moguce tek od verzije 4.1.
U svakom slucaju bi taj subquery po meni bio komplikovan, ako je uopste izvediv.

Sa dva query-a je vec moguce.

Code:
SELECT IdK, ImeK
FROM kategorije
ORDER BY IdK;


Tokom svake iteracije proslijedis IdK drugom query-u:

Code:
SELECT IdE, ImeE
FROM elementi
WHERE Kat= '$proslijedjeni_id_kategorije'
ORDER BY Brojac DESC, ImeE ASC
LIMIT 3;


Sve to na kraju lijepo ispises. Valjda znas kako to odraditi u PHP-u ?

Ako se ipak odlucis na eksperimentisanje sa subqueries, evo ti direktan link do dokumentacije:
http://dev.mysql.com/doc/mysql/en/Subqueries.html
Blog - baze podataka
---------------------
Oracle OCP DBA (9i & 10g)
Oracle Database: SQL Certified Expert
Oracle OCP Developer
Certified MySQL DBA
 
Odgovor na temu

Guardian OfThe Blind
Beograd

Član broj: 1048
Poruke: 78
*.beograd-1.tehnicom.net



Profil

icon Re: lista kateogrija sa po n najpopularnijih proizvoda, podkategorija...14.05.2004. u 13:10 - pre 193 meseci
Sad ispade kao da sam neka neznalica. Pitao sam za neki drugi način osim upita u petlji; bavim se web programiranjem nekih pet godina tako da stvarno nisi morao da pišeš to rešenje. Više sam hteo da pitam teoretski za alternaivna rešenja pa sam malo razočaran nekreativnošću odgovora... Npr uraditi unbuffered query na:
Code:

SELECT IdE, ImeE
FROM elementi
ORDER BY Brojac DESC, ImeE ASC


pa iteracijom kroz svaki element dodeljivati ga podnizu kategorije (ukoliko nije napunjena). Ili čuvati u tabeli kategorija još jedno polje npr TopElem koje bi sadržalo IdE-ve najpopularnijih elemenata u obliku varachara 'id1,id2,id3' - npr povremeno updaetovati ovo polje koje se lako join-uje...
 
Odgovor na temu

Dejan Topalovic
Dejan Topalović
Senior Oracle DBA & Senior PL/SQL
Developer, Erste Sparinvest (Erste
Bank), Vienna, Austria
Vienna

Član broj: 635
Poruke: 1374
*.1.14.vie.surfer.at

Sajt: www.baze-podataka.net


+2 Profil

icon Re: lista kateogrija sa po n najpopularnijih proizvoda, podkategorija...14.05.2004. u 16:12 - pre 193 meseci
Nisam ti odgovorio sa namjerom da te ponizavam ili dovodim u pitanje tvoje znanje, nego sam htio samo pomoci.
Medjutim, izgleda da ti se jos moram izvinuti sto sam ti pokusao dati neki koristan savjet.
Eh ...
Blog - baze podataka
---------------------
Oracle OCP DBA (9i & 10g)
Oracle Database: SQL Certified Expert
Oracle OCP Developer
Certified MySQL DBA
 
Odgovor na temu

bluesman

Član broj: 4505
Poruke: 1895
*.247.eunet.yu



Profil

icon Re: lista kateogrija sa po n najpopularnijih proizvoda, podkategorija...15.05.2004. u 01:39 - pre 193 meseci
Ono sto meni pada na pamet je grupisanje, ali to sada mora da se proba pa da se vidi kako radi... Cini mi se da je lakse da dobijes sve elemente umesto odredjeni broj (samo 3). Poenta je da radis select iz tabele elementi a ne kategorije, to je jedini nacin (ako ikako moze) da se izbegne 2 querija, a ionako imas sve podatke tamo. JOIN ti sluzi samo da bi pokupio ime kategorije. Recimo ovako:

SELECT e.*, k.ImeK from elementi AS e LEFT JOIN kategorije AS k ON (k.IdK = e.Kat) GROUP BY e.Kat, e.IdE ORDER BY e.idK, e.Brojac DESC

probaj pa reci sta dobijas pa cemo onda da podesavamo (u ORDER BY mozes i da permutujes ova 2 polja). Aj' probaj :-)
Goran Pilipović fka bluesman
 
Odgovor na temu

Guardian OfThe Blind
Beograd

Član broj: 1048
Poruke: 78
*.108.EUnet.yu



Profil

icon Re: lista kateogrija sa po n najpopularnijih proizvoda, podkategorija...19.05.2004. u 10:08 - pre 193 meseci
Da, to sam i uradio, samo čini mi se da je GROUP BY viška, isto se dobija i bez njega; Stavio sam i ograničenje specifično za moj slučaj WHERE Brojac>0 pošto me takvi rezultati ne zanimaju. Posle sam ipak razdvojio na 2 upita, prvi koji selektuje sve kategorije (a ima ORDER BY ImeKategorije pa nisam hteo to da radim kroz JOIN) i drugi koji pokupi samo elemente sa idevim kategorija, a php ih posle dodeljuje odgovarajućoj kategoriji... Čini mi se da ne može bolje od ovoga; možda sa nekim nabudženim if-ovima i HAVING-om ali sumnjam... Hvala na savetima.
 
Odgovor na temu

Dejan Topalovic
Dejan Topalović
Senior Oracle DBA & Senior PL/SQL
Developer, Erste Sparinvest (Erste
Bank), Vienna, Austria
Vienna

Član broj: 635
Poruke: 1374
*.1.14.vie.surfer.at

Sajt: www.baze-podataka.net


+2 Profil

icon Re: lista kateogrija sa po n najpopularnijih proizvoda, podkategorija...24.05.2004. u 03:45 - pre 193 meseci
Ja sam nesto pokusavao sa subqueries na MySQL 4.1.1a-alpha-nt, ali mi javlja gresku da LIMIT nije moguc u subqeryu cije rezultate usporedjujes sa IN ili ANY, a ne moze se koristiti = , jer subquery treba da vrati 3 vrijednosti IdE poredane po kategoriji ASC i Brojacu DESC.
Blog - baze podataka
---------------------
Oracle OCP DBA (9i & 10g)
Oracle Database: SQL Certified Expert
Oracle OCP Developer
Certified MySQL DBA
 
Odgovor na temu

CandyMan

Član broj: 3420
Poruke: 147



+48 Profil

icon Re: lista kateogrija sa po n najpopularnijih proizvoda, podkategorija...10.06.2004. u 11:32 - pre 192 meseci
Tabela KATEGORIJA
Code:


id    naziv    
------------    
1    Prva            
2    Druga            
3    Treca


Tabela ELEMENT
Code:
    
kategorija_id    id    naziv    pogodak
-----------------------------------
1               1    aa    2
1               2    bb    41
1               3    cc    61
1               4    dd    121
1              14    nn    1
1              15    oo    1
2               5    ee    1
2               6    ff    42
2               7    gg    421
2               8    hh    1
2              16    pp    57451
2              17    rr    741
3               9    ii    6531
3              10    jj    1
3              11    kk    631
3              12    ll    1
3              13    mm    7341
                                                        


Upit koji će vratiti prva tri elementa sa najviše pogodaka za svaku kategoriju:
Code:

SELECT k.naziv, e.naziv, e.pogodak
  FROM kategorija AS k INNER JOIN element AS e ON k.id = e.kategorija_id
 WHERE (((3)>(select count(*)
                from element e2
               where e2.pogodak > e.pogodak
                 and e2.kategorija_id=e.kategorija_id)))
 ORDER BY k.id, e.pogodak DESC


Rezultat upita:
Code:

k.naziv    e.naziv    pogodak
-------------------------
Prva          dd    121
Prva          cc    61
Prva          bb    41
Druga          pp    57451
Druga          rr    741
Druga          gg    421
Treca          mm    7341
Treca          ii    6531
Treca          kk    631


Napravljeno u na brzaka u MS Accessu - verujem da je isto ili slično u MySQL-u. Fajl u prilogu...

Nisam ni znao da znam dok nisam prob'o!
Prikačeni fajlovi
 
Odgovor na temu

Dejan Topalovic
Dejan Topalović
Senior Oracle DBA & Senior PL/SQL
Developer, Erste Sparinvest (Erste
Bank), Vienna, Austria
Vienna

Član broj: 635
Poruke: 1374
*.1.14.vie.surfer.at

Sajt: www.baze-podataka.net


+2 Profil

icon Re: lista kateogrija sa po n najpopularnijih proizvoda, podkategorija...20.07.2004. u 10:32 - pre 191 meseci
Svaka cast. Radi i na MySQL-u (4.1.1a-alpha-nt). Izbacio sam samo suvisne zagrade, tako da je ostalo (3>(select i )) ORDER BY.
Blog - baze podataka
---------------------
Oracle OCP DBA (9i & 10g)
Oracle Database: SQL Certified Expert
Oracle OCP Developer
Certified MySQL DBA
 
Odgovor na temu

[es] :: MySQL :: lista kateogrija sa po n najpopularnijih proizvoda, podkategorija...

[ Pregleda: 5695 | Odgovora: 10 ] > FB > Twit

Postavi temu Odgovori

Navigacija
Lista poslednjih: 16, 32, 64, 128 poruka.