Возьмем к примеру некий продукт, который добавляется в админке, каким образом добавить сразу в две категории этот товар. Ведь у нас в строчке с товаром в mysql есть столбец "К какой категории принадлежит данный продукт"... К примеру некая категория имеет id_category = 5. То в таблице продуктов будет такая строчка Код (Text): id_tovar id_category name 0001 5 Название продукта При нахождении в этой "Пятой" категории. мы и будем видеть этот товар. Но во всех остальных мы его не подгружаем... Натолкните на мысль, так как нужно реализовать. Спасибо!
id_category - varchar id_category = 5, 1, 3 В запросе использовать оператор IN() http://dev.mysql.com/doc/refman/5.1/en/ ... unction_in
Примерная структура: [sql]-- -- MySQL 5.1.36 -- Thu, 12 Aug 2010 17:29:01 +0000 -- CREATE TABLE `tovars` ( `tovar_id` int(10) unsigned not null auto_increment, `category_id` varchar(255) not null, `name` varchar(255) not null, PRIMARY KEY (`tovar_id`), UNIQUE KEY (`name`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=4; INSERT INTO `tovars` (`tovar_id`, `category_id`, `name`) VALUES ('1', '1,4', 'Яйцо'); INSERT INTO `tovars` (`tovar_id`, `category_id`, `name`) VALUES ('2', '2,3', 'Молоко'); INSERT INTO `tovars` (`tovar_id`, `category_id`, `name`) VALUES ('3', '5,1', 'Огурец'); CREATE TABLE `categories` ( `id` int(10) unsigned not null auto_increment, `category` varchar(255) not null, PRIMARY KEY (`id`), UNIQUE KEY (`category`) ) ENGINE=MyISAM DEFAULT CHARSET=utf8 AUTO_INCREMENT=6; INSERT INTO `categories` (`id`, `category`) VALUES ('1', 'Первая категория'); INSERT INTO `categories` (`id`, `category`) VALUES ('2', 'Вторая категория'); INSERT INTO `categories` (`id`, `category`) VALUES ('3', 'Третья категория'); INSERT INTO `categories` (`id`, `category`) VALUES ('4', 'Четвертая категория'); INSERT INTO `categories` (`id`, `category`) VALUES ('5', 'Пятая категория');[/sql]
У каждого метода свои плюсы и недостатки. Вы хотели запрос, вы его получили. Биться об стену - занятие для бездельников.
Тут есть ошибка: http://dev.mysql.com/doc/refman/5.1/en/ ... tion_instr Нужно использовать FIND_IN_SET(): http://dev.mysql.com/doc/refman/5.1/en/ ... ind-in-set [sql]SELECT * FROM `tovars` WHERE FIND_IN_SET(5, `category_id`)[/sql] Где 5 - Id Категории
Devzirom блин столько умников развелось, капец. Пиши, ради Бога, я буду больше тебя денег получать с помощью того, что я написал. ГЫГЫГЫГЫ
например Код (Text): +--------+------------+----------+ | id | name | category | +--------+------------+----------+ | jQ18hd | iPhone 3GS | 17 | +--------+------------+----------+ | jQ18hd | iPhone 3GS | 18 | +--------+------------+----------+ | jQ18hd | iPhone 3GS | 21 | +--------+------------+----------+ | jQ18hd | iPhone 3GS | 3497 |
или чтобы не хранить много копий name для одного товара - отдельная таблица id и категории. Это решение "с ходу", но вроде жизнеспособно.
Я понимаю, что краткость - сестра таланта, но другие в ответах дают столько информации, чтобы было понятно топикстартеру, прикидывая по его посту уровень знаний. Как думаешь, всем понятно стало, что ты хотел сказать в своем посте?