SQLinfo.ru - Все о MySQL

Форум пользователей MySQL

Задавайте вопросы, мы ответим

Вы не зашли.

#1 21.07.2011 03:26:32

duke333
Участник
Зарегистрирован: 21.07.2011
Сообщений: 2

Обединение нескольких таблиц

Для хранения артиклей входящих в заказ использую таблицу (order_item)
CREATE TABLE `order_item` (
  `id_order` int(11) NOT NULL,
  `id_item` int(11) NOT NULL,
  `item_type` varchar(15) NOT NULL,
  `item_index` tinyint(2) unsigned NOT NULL,
  `quantity` smallint(4) unsigned NOT NULL,
  PRIMARY KEY  (`id_order`,`id_item`,`item_type`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;

`item_type` - содержит название таблицы в которой содержатсяя данные по артиклю (т.е. service, excursion или accomodation)

Сами же артикли ввиду того что имеют разный характеристики я храну в разных таблицах (service, excursion, accomodation)
CREATE TABLE `excursion` (
  `id_item` int(11) NOT NULL auto_increment,
  `name` varchar(255) default NULL
...
параметры
...
  PRIMARY KEY  (`id_e`),
  UNIQUE KEY `NewIndex` (`name`)
) ENGINE=MyISAM AUTO_INCREMENT=10 DEFAULT CHARSET=utf8;
таким же образом реалезованы и (service, accomodation)

Вопрос такой: Как по id_order получить список артиклей входящих в заказ?
учитывая что id_item уникален только для своей таблици

Неактивен

 

#2 28.07.2011 08:07:51

verybadbug
Участник
Зарегистрирован: 17.02.2010
Сообщений: 11

Re: Обединение нескольких таблиц

SELECT * FROM `order_item`
LEFT JOIN `service` ON `service`.`id_item`=`order_item`.`id_item` AND `order_item`.`item_type`='service'
LEFT JOIN `excursion` ON `excursion`.`id_item`=`order_item`.`id_item` AND `order_item`.`item_type`='excursion'
LEFT JOIN `accomodation` ON `accomodation`.`id_item`=`order_item`.`id_item` AND `order_item`.`item_type`='accomodation'
WHERE `order_item`.`id_order`=1

Сами же артикли ввиду того что имеют разный характеристики я храну в разных таблицах

это не правильно... лучше для характеристик сделать отдельную таблицу

Неактивен

 

#3 02.08.2011 23:51:28

duke333
Участник
Зарегистрирован: 21.07.2011
Сообщений: 2

Re: Обединение нескольких таблиц

verybadbug написал:

SELECT * FROM `order_item`
LEFT JOIN `service` ON `service`.`id_item`=`order_item`.`id_item` AND `order_item`.`item_type`='service'
LEFT JOIN `excursion` ON `excursion`.`id_item`=`order_item`.`id_item` AND `order_item`.`item_type`='excursion'
LEFT JOIN `accomodation` ON `accomodation`.`id_item`=`order_item`.`id_item` AND `order_item`.`item_type`='accomodation'
WHERE `order_item`.`id_order`=1

Сами же артикли ввиду того что имеют разный характеристики я храну в разных таблицах

это не правильно... лучше для характеристик сделать отдельную таблицу

a kak hot` priblizitelno v takom slychae dolgni vigljadet` tablizi artikli i ih parametri ?

Неактивен

 

Board footer

Работает на PunBB
© Copyright 2002–2008 Rickard Andersson