2017-03-01 42 views
0

我需要你幫忙,我有3個ORDERS,ORDER_ITEM,ORDER_ITEM_LINE。只選擇前兩項,並訂購

CREATE TABLE orders 
(`id` int, `date` datetime) 
; 

INSERT INTO orders 
(`id`, `date`) 
VALUES 
(78, '2017-01-03 00:00:00'), 
(79, '2017-02-03 00:00:00'), 
(80, '2017-03-03 00:00:00'), 
(81, '2017-04-03 00:00:00'), 
(82, '2017-05-03 00:00:00'), 
(83, '2017-06-03 00:00:00'), 
(84, '2017-07-03 00:00:00') 

;

CREATE TABLE order_item 
(`id` int, `fk_o_id` int, `sku` int) 
; 

INSERT INTO order_item 
(`id`, `fk_o_id`, `sku`) 
VALUES 
(10, 78, 123), 
(11, 79, 124), 
(12, 79, 125), 
(13, 80, 126), 
(14, 82, 127), 
(15, 82, 128), 
(16, 82, 129) 
; 


CREATE TABLE order_item_line 
(`id` int, `fk_oi_id` int, `line_id` int) 
; 

INSERT INTO order_item_line 
(`id`, `fk_oi_id`, `line_id`) 
VALUES 
(33, 10, 1), 
(34, 11, 1), 
(35, 12, 2), 
(36, 13, 1), 
(37, 14, 1), 
(38, 15, 2), 
(39, 16, 3) 

;

我想有2個或2名以上的項目,但只顯示所有訂單前兩個那麼它將被line_id - 1和2

結果應該是這樣的:

Outcome

如果您有任何想法,請提前致謝。

+0

節目表結構的文本格式 – denny

+0

請稍等片刻 – Bobby

+0

好吧,我知道,但請給表的一些文本格式,而不是像format.than我很容易爲你做的 – denny

回答

0

要獲得您需要的結果,您需要創建另一個表。在這個例子中,我創建了一個名爲TESTQUERY和插入的數據表來計算訂單ID多少次出現

創建表

CREATE TABLE TESTQUERY 
(`id` int, `count` int) 

數據導入測試表

INSERT INTO TESTQUERY 
(
SELECT o.id, COUNT(o.id) as count FROM orders o 
JOIN order_item oi ON oi.fk_o_id = o.id 
JOIN order_item_line oil ON oil.fk_oi_id = oi.id 
GROUP BY o.id 
) 

我當時對查詢全部用於使用以下查詢的數據庫,並且它返回了您期望的結果

SELECT o.id, oi.sku, oil.line_id FROM orders o 
JOIN order_item oi ON oi.fk_o_id = o.id 
JOIN order_item_line oil ON oil.fk_oi_id = oi.id 
JOIN TESTQUERY t ON t.id = o.id 
WHERE t.count > 1 AND oil.line_id < 3 

我希望這有助於