Pogledajte određenu poruku
Staro 30. 05. 2009.   #1
mb_sa
profesionalac
Qualified
 
Datum učlanjenja: 19.05.2007
Poruke: 123
Hvala: 13
3 "Hvala" u 3 poruka
mb_sa is on a distinguished road
Default [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);
mb_sa je offline   Odgovorite uz citat