2015-06-29 77 views
1

我需要顯示產品取決於用戶的價格選擇,在這裏我面臨的問題是我的代碼請告訴我如何解決這個問題。產品提取取決於價格選擇使用php mysql查詢

我已經創建SQL撥弄請檢查此鏈接clickhere

我的表:

CREATE TABLE products (
    `id` int(11) NOT NULL AUTO_INCREMENT, 
    `name` varchar(500) NOT NULL, 
    `description` text NOT NULL, 
    `category_id` int(11) NOT NULL, 
    PRIMARY KEY (`id`) 
) ENGINE=InnoDB; 

INSERT INTO products (`id`, `name`, `description`, `category_id`) VALUES 
(1, 'Samsung Galaxy S4', 'Samsung Galaxy S4 GT- I9500', 6), 
(2, 'Samsung Galaxy S3 Neo', 'Samsung Galaxy S3 Neo', 6), 
(3, 'Samsung Galaxy S Duos 3', 'Samsung Galaxy S', 6), 
(4, 'Samsung Galaxy Grand 2', 'Samsung Galaxy Grand 2', 6); 

INSERT INTO products (`id`, `name`, `description`, `category_id`) VALUES 
(5, 'Samsung Galaxy TAB', 'Samsung Galaxy TAB', 7), 
(6, 'Samsung Galaxy TAB 2', 'Samsung Galaxy TAB 2', 7), 
(7, 'Samsung Galaxy TAB 3', 'Samsung Galaxy TAB 3', 7), 
(8, 'Samsung Galaxy TAB 4', 'Samsung Galaxy TAB 4', 7); 

CREATE TABLE price (
    `id` int(11) NOT NULL AUTO_INCREMENT, 
    `product_id` int(11) NOT NULL, 
    `price` int(11) NOT NULL, 
    PRIMARY KEY (`id`) 
) ENGINE=InnoDB; 

INSERT INTO price (`id`, `product_id`, `price`) VALUES 
(1, 1, 6930), 
(2, 1, 7000), 
(3, 2, 12490), 
(4, 2, 13000), 
(5, 3, 6400), 
(6, 3, 7000), 
(7, 4, 14300), 
(8, 4, 15000), 
(9, 5, 10000), 
(10,5, 11000), 
(11,6, 12000), 
(12,6, 13000), 
(13,7, 14000), 
(14,7, 15000), 
(15,8, 20000), 
(16,8, 22000); 

select DISTINCT p.*, p.category_id as pid FROM products AS p LEFT JOIN price as pr ON pr.product_id=p.id where pr.price >= 5001 AND pr.price <= 10000 OR pr.price >= 10001 AND pr.price <= 20000 AND p.category_id IN (6); 

當我運行這個qquery我的本意是產品應在「6」的CATEGORY_ID配備,但在這裏我我也得到7。請在sql小提琴中看到現場示例。

回答

2

括號只是包裝這種情況下,我已經測試你的提琴

where (pr.price >= 5001 AND pr.price <= 10000 OR pr.price >= 10001 AND pr.price <= 20000) 
+0

謝謝你,它的工作...我會做點擊,在幾分鐘內接受。 –