У меня таблица товаров имела вот такую структуру.
id_product, name, id_category, price.
А таблица категорий такая
id_category, name, parent_category.
Ну вот и проблема появилась. Я не учел что товар может быть не в одной категории.
Мне правильней всего создать еще связующую таблицу???
id, id_product, id_category
Так делают обычно? Если да, то запросы на вывод данных не очень сложно ведь будет делать?
Спустя 9 минут, 41 секунда (1.06.2011 - 20:51) sharki написал(а):
В таблице товаров сделай поле id_category varchar и туда вписывай категории через запятую, в потом при выборке используй IN.
Щас может что лучше предложат
Щас может что лучше предложат
Спустя 4 минуты, 20 секунд (1.06.2011 - 20:56) maximka787 написал(а):
sharki
меня учили всегда использовать модель системы реляционную, то есть без использования serialize и тд. Все же лучше конечно через связующую таблицу. Причем я вскрывал базы данных популярных CMS там что-то типо того и было. Вот и интересно стало, а то наступить на грабли второй раз будет глупо и болезненно.
меня учили всегда использовать модель системы реляционную, то есть без использования serialize и тд. Все же лучше конечно через связующую таблицу. Причем я вскрывал базы данных популярных CMS там что-то типо того и было. Вот и интересно стало, а то наступить на грабли второй раз будет глупо и болезненно.
Спустя 2 минуты, 44 секунды (1.06.2011 - 20:58) sharki написал(а):
Твой вариант тоже ниче так, только тебе надо будет все 5к товаров переделывать =)
Спустя 4 минуты, 12 секунд (1.06.2011 - 21:03) maximka787 написал(а):
sharki
я подумаю над запросом. не зря я плотно изучаю их.
Думаю тут один sql в помощь, причем один запрос.
я подумаю над запросом. не зря я плотно изучаю их.
Думаю тут один sql в помощь, причем один запрос.
Спустя 1 минута, 58 секунд (1.06.2011 - 21:05) sharki написал(а):
Ну хотя да, я щас так подумал, что не будет труда сделать апдейт всех товаров, сначала надо сделать массовый инсерт на PHP, а потом сделать один UPDATE для обновления id_category. Не забудь сделать бекап
Спустя 1 минута, 16 секунд (1.06.2011 - 21:06) maximka787 написал(а):
sharki
Конечно) у меня база весит 2,5МБ. это месяц работы) да я даже два бэкапа сделаю)
Конечно) у меня база весит 2,5МБ. это месяц работы) да я даже два бэкапа сделаю)
Спустя 13 часов, 10 минут, 36 секунд (2.06.2011 - 10:16) linker написал(а):
tovar
id
category
id
tovar2category
idtovar
idcategory
id
category
id
tovar2category
idtovar
idcategory
SELECT
`category`.*, `tovar`.*
FROM
`category`
LEFT JOIN
`tovar2category`
ON
`tovar2category`.`idcategory` = `category`.`id`
LEFT JOIN
`tovar`
ON
`tovar`.`id` = `tovar2category`.`idtovar`
_____________
..Работает - не трогай!