|
SQL baze podataka - Sponzor: Baze-Podataka.net MySQL, MSSQL, Oracle, Access, ODBC. Ako imate problem brže i preciznije ćete dobiti odgovor ako priložite strukturu tabela ili skript koji kreira tabele i puni ih test podacima umesto što to problem opisujete samo rečima. Sponzor: Baze-Podataka.net - Blog o bazama podataka |
|
Alati teme | Način prikaza |
|
30. 05. 2009. | #1 |
profesionalac
Qualified
Datum učlanjenja: 19.05.2007
Poruke: 123
Hvala: 13
3 "Hvala" u 3 poruka
|
[MySQL] Neogranicen broj kategorija i proizvoda, upit
Pozdrav.
U pirncipu imam situaciju gdje imam neogranicen broj kategorija (razliciti nivoi) i neogranicen broj proizovda. Na dnu se nalaze strukture tabela i testni podaci. U principu meni je potrebno da za odredjeni id kategorije (PK za category tabelu) dobijem prozivode koji spadaju u tu kategoriju (+proizvodi njenih potkategorija). Npr za ID = 3 bi trebalo da izbaci 3 prozivoda. Npr za ID = 5 bi trebalo da izbaci 1 prozivod. Npr za ID = 6 bi trebalo da izbaci 2 prozivoda. Npr za ID = 7 bi trebalo da izbaci 1 prozivod. Da li je ovo moguce da dobijem sa jednim upitom (pretohdno se pravi upit koji bi dobavio podatke o toj kategoriji, tako da su id_father, parents_list ... unaprijed dostupni) u kojem bi se mijenjao samo id kategorije. Naravno, ako je potrebno da se korz programsk jezik gradi upit, ovisno o broju kategorija, nije iskljucujauca varijanata. Lijep pozdrav. Kôd:
-- -- Table structure for table `category` -- CREATE TABLE `category` ( `id` int(11) NOT NULL auto_increment, `name` varchar(100) default NULL, `id_father` smallint(6) NOT NULL default '0', `parents_list` text NOT NULL, PRIMARY KEY (`id`), KEY `name` (`name`,`id_father`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=8 ; -- -- Dumping data for table `category` -- INSERT INTO `category` VALUES (1, 'Cat 1', 0, '1'); INSERT INTO `category` VALUES (2, 'Cat 2', 0, '2'); INSERT INTO `category` VALUES (3, 'Cat 3', 0, '3'); INSERT INTO `category` VALUES (4, 'Cat 4', 0, '4'); INSERT INTO `category` VALUES (5, 'Cat 5', 1, '1,5'); INSERT INTO `category` VALUES (6, 'Cat 6', 1, '1,6'); INSERT INTO `category` VALUES (7, 'Cat 7', 6, '1,6,7'); -- -------------------------------------------------------- -- -- Table structure for table `product` -- CREATE TABLE `product` ( `id_product` int(11) NOT NULL auto_increment, `title` varchar(255) default NULL, `id_category` int(11) NOT NULL default '0', PRIMARY KEY (`id_product`), KEY `id_category` (`id_category`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=4 ; -- -- Dumping data for table `product` -- INSERT INTO `product` VALUES (1, 'Prod 1', 5); INSERT INTO `product` VALUES (2, 'Prod 2', 6); INSERT INTO `product` VALUES (3, 'Prod 3', 7); |
30. 05. 2009. | #2 | |
Miljenko Rebernišak
Qualified
Datum učlanjenja: 05.03.2009
Lokacija: Jagodina-Beograd
Poruke: 191
Hvala: 4
25 "Hvala" u 22 poruka
|
Ako vec imas dostupne idove podkategorija mozes uraditi
Citat:
|
|
30. 05. 2009. | #3 | |
profesionalac
Qualified
Datum učlanjenja: 19.05.2007
Poruke: 123
Hvala: 13
3 "Hvala" u 3 poruka
|
Citat:
Trenutno nemam ID-jeve svih potkategorija te kategorije, već samo za tu kategoriju, ali nacicemo ih Nadam se da ce se fino indexi moci nastimati u ovkakom slucaju. Pozdrav i hvala! |
|
31. 05. 2009. | #4 |
majstor
Wrote a book
|
Pa nisam siguran da je to izvodljivo sa jednim upitom, buduci da ti nemas konacan broj podkategorija vec moras koristiti rekurziju da ih nadjes sve kako bi onda imao niz kategorija u kojim trazis artikle.
|
31. 05. 2009. | #5 | |
profesionalac
Qualified
Datum učlanjenja: 19.05.2007
Poruke: 123
Hvala: 13
3 "Hvala" u 3 poruka
|
Citat:
Npr. ako bi se umjesto '1,6,7' zapisivalo ',1,6,7,' onda moze se uraditi SELECT lista_roditelja WHERE LIKE '%,$id,%', trpa se u php array i onda se sa array_unique dobije željeni rezultat. Istina je da se ne moze namjestiti index i da se radi full table scan, ali vjerujem da nije toliko strasno ukoliko se radi o manjem broju kategorija, a array_unique bi radio prosjecno sa 10-tak elementa, barem u mom slucaju. Pozdrav. |
|
31. 05. 2009. | #6 |
Dejan Katašić
Wrote a book
Datum učlanjenja: 10.06.2005
Lokacija: Novi Sad
Poruke: 1.017
Hvala: 129
86 "Hvala" u 43 poruka
|
Sa drugačijom organizacijom u bazi je moguće:
http://www.sitepoint.com/article/hie...data-database/ http://dev.mysql.com/tech-resources/...ical-data.html |
31. 05. 2009. | #7 | |
profesionalac
Qualified
Datum učlanjenja: 19.05.2007
Poruke: 123
Hvala: 13
3 "Hvala" u 3 poruka
|
Citat:
Ja vec imam tabelu popunjenju kategorijama (nekih 350 kategorija). Princip je isti kao sa primjera (Elektornika), samo sto ja imam 10-tak takvih glavnih kategorija (Elektornika, Auto, Sport ....) koje imaju svoje potkategorije. Imali li neko ideju i da mi da smjernicu kako da najlakse dodjem to lft i rgt vrijednosti za svaku od kategorija? Pozdrav i hvala. |
|
31. 05. 2009. | #8 |
Bojan Abramovic
Professional
Datum učlanjenja: 16.01.2008
Lokacija: Novi Sad
Poruke: 232
Hvala: 30
47 "Hvala" u 30 poruka
|
http://www.sitepoint.com/article/hie...ta-database/3/
Imas lepo opisano kako da radis rebuild tree, ali predlozio bih ti da procitas citav clanak. |
31. 05. 2009. | #9 | |
profesionalac
Qualified
Datum učlanjenja: 19.05.2007
Poruke: 123
Hvala: 13
3 "Hvala" u 3 poruka
|
Citat:
Ljudi, hvala velika, sada sam načisto sa hijerarijskim podacima u MySQL-u, do sada su to sve neka polovicna rješenja bila. Hvala jos jednom. |
|
|
|
Slične teme | ||||
Tema | Početna poruka teme | Forum | Odgovori | Poslednja poruka |
MYSQL: Kako struktuirati tabele vezano za broj prikaza nekog teksta na stranici? | mb_sa | SQL baze podataka - Sponzor: Baze-Podataka.net | 6 | 03. 03. 2009. 08:16 |
Složen MySQL upit | Marko Medojevic | SQL baze podataka - Sponzor: Baze-Podataka.net | 2 | 03. 11. 2008. 21:05 |
Id, kategorija - jedan query | Ivan | SQL baze podataka - Sponzor: Baze-Podataka.net | 4 | 13. 11. 2007. 03:09 |
mysql upit | pele | Sva početnička pitanja | 1 | 14. 08. 2007. 05:13 |
Jedan artikal u više kategorija | Dušan Dželebdžić | Programiranje | 20 | 02. 08. 2006. 15:49 |