У меня есть структуру таблицы следующим образом:Как написать запрос, чтобы получить специальную цену при наличии
-- 1 price type.
CREATE TABLE IF NOT EXISTS `price_type` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`type` varchar(50) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=3 ;
INSERT INTO `price_type` (`id`, `type`) VALUES
(1, 'Normal price'),
(2, 'Special price');
-- 2 Products
CREATE TABLE IF NOT EXISTS `product` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`name` varchar(100) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=5 ;
INSERT INTO `product` (`id`, `name`) VALUES
(1, 'Tshirt'),
(2, 'Shirt'),
(3, 'Pants'),
(4, 'Pull over');
-- 3 Product price
CREATE TABLE IF NOT EXISTS `product_price` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`product_id` int(11) NOT NULL,
`price_type_id` int(11) NOT NULL,
`price` float NOT NULL,
`start_date` date NOT NULL,
`end_date` date NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=6 ;
INSERT INTO `product_price` (`id`, `product_id`, `price_type_id`, `price`, `start_date`, `end_date`) VALUES
(1, 1, 1, 300, '0000-00-00', '0000-00-00'),
(2, 2, 1, 500, '0000-00-00', '0000-00-00'),
(3, 3, 1, 400, '0000-00-00', '0000-00-00'),
(4, 3, 2, 150, '2015-08-01', '2015-11-02'),
(5, 4, 1, 600, '0000-00-00', '0000-00-00');
Ожидаемый результат (особый период времени):
Продукция (продукт) цены хранятся в другой таблице (product_price) с разными типами цен (price_type).
В этом случае товарные штаны имеют специальную цену 150,00 между 2015-08-01 и 2015-11-02. Поэтому он должен показывать специальную цену, а не обычную цену 400,00
Как я могу написать запрос?
попробуйте прочитать о присоединяется и как использовать их – Satya
дата не относящихся к операции, которую вы хотите. Это как @satya сказал простой операции JOIN. Постарайтесь прочитать об этом, а затем покажите нам, что вы пробовали. Затем вы обновите свой вопрос с помощью своего sql. SO не является домашним сервисом. –
проверить ответы на этот вопрос http://stackoverflow.com/questions/14885912/select-case-when-then-select –