0
基本情景:我有3種類型的產品,有幾種製造商,根據客戶的位置,產品來自最近的製造商。我有一些幾乎可以工作的東西,但我認爲我的表格需要更好一些。哪個MySQL查詢根據位置選擇產品
這裏是我目前:
CREATE TABLE IF NOT EXISTS `mfr` (
`id` int(11) NOT NULL auto_increment,
`zip_code` int(5) NOT NULL,
`radius` int(5) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=8 ;
INSERT INTO `mfr` (`id`, `zip_code`, `radius`) VALUES
(1, 72756, 500),
(2, 74030, 360),
(3, 74701, 325),
(4, 72947, 300),
(5, 73112, 40),
(6, 63077, 100),
(7, 63106, 75);
CREATE TABLE IF NOT EXISTS `models` (
`id` int(11) NOT NULL auto_increment,
`name` varchar(50) NOT NULL,
`mfr_id` int(5) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=8 ;
INSERT INTO `models` (`id`, `name`, `mfr_id`) VALUES
(1, 'model 1', 1),
(2, 'model 2', 2),
(3, 'model 3', 2),
(4, 'model 1', 6),
(5, 'model 2', 4),
(6, 'model 3', 4);
CREATE TABLE IF NOT EXISTS `distances` (
`id` int(11) NOT NULL auto_increment,
`time_inserted` int(11) NOT NULL,
`zip_code` int(5) NOT NULL,
`mfr_id` int(5) NOT NULL,
`miles` int(5) NOT NULL,
PRIMARY KEY (`id`),
KEY `zip_code` (`zip_code`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci AUTO_INCREMENT=16 ;
INSERT INTO `distances` (`id`, `time_inserted`, `zip_code`, `mfr_id`, `miles`) VALUES
(1, 1397522155, 72761, 1, 41),
(2, 1397522155, 72761, 2, 131),
(3, 1397522155, 72761, 3, 223),
(5, 1397522155, 72761, 5, 197),
(6, 1397522156, 72761, 6, 301),
(7, 1397522156, 72761, 7, 353),
(8, 1397522166, 72761, 4, 87);
預期結果: 的72761郵編應該爲模型1返回1 MFR_ID 41英里的4款2和3 MFR_ID與87英里,而是2 MFR_ID則返回模式2和3,即使milage是131,這是大於87
http://www.sqlfiddle.com/#!2/e450b/1/0
您嘗試過哪些查詢? – hanleyhansen