我在數據庫中3代表這樣返回查詢結果與工會內部查詢
表availability
availability_id | date | price | room_id | closed
-------------------------------------------------------
1 | 2017-01-24 | 75 | 8 | 0
2 | 2017-01-24 | 95 | 9 | 0
3 | 2017-01-25 | 80 | 73 | 0
4 | 2017-01-25 | 70 | 65 | 0
5 | 2017-01-26 | 85 | 42 | 0
6 | 2017-01-26 | 65 | 21 | 0
表offer_day
plan_id | offer_id date | price | room_id | | closed
------------------------------------------------------------
1 | 12 | 2017-01-24 | 70 | 8 | 0
2 | 23 | 2017-01-24 | 75 | 9 | 0
3 | 12 | 2017-01-25 | 70 | 8 | 1
3 | 14 | 2017-01-25 | 70 | 8 | 0
4 | 34 | 2017-01-25 | 75 | 9 | 0
5 | 43 | 2017-01-25 | 80 | 73 | 0
6 | 54 | 2017-01-25 | 85 | 65 | 0
7 | 65 | 2017-01-26 | 75 | 42 | 0
8 | 44 | 2017-01-26 | 70 | 21 | 0
表package_day
package_id | date | price | room_id | closed
--------------------------------------------------
1 | 2017-01-24 | 120 | 8 | 0
2 | 2017-01-24 | 125 | 9 | 0
3 | 2017-01-25 | 135 | 73 | 0
4 | 2017-01-25 | 130 | 65 | 0
5 | 2017-01-26 | 125 | 42 | 0
5 | 2017-01-26 | 120 | 21 | 0
我有這樣的查詢:
SELECT a.price
FROM availability a
WHERE a.closed = 0 AND a.date >= '2017-01-24' AND a.date <= DATE_SUB('2017-01-26', INTERVAL 1 DAY)
UNION
SELECT 0.price
FROM offer_day o
WHERE o.closed = 0 AND o.date >= '2017-01-24' AND o.date <= DATE_SUB('2017-01-26', INTERVAL 1 DAY)
UNION
SELECT p.price
FROM package_day p
WHERE p.closed = 0 AND p.date >= '2017-01-24' AND p.date <= DATE_SUB('2017-01-26', INTERVAL 1 DAY)
如果我運行該查詢,我會得到所有行是closed = 0
。正如您在表offer_day
中看到的那樣,列closed
中的值爲1。
我不想顯示的結果,如果在close
列在同一room_id
和相同offer_id
任何行包含值1
例如,你可以在表offer_day
看到room_id
8有兩個日期「2017- 01-24'和'2017-01-25'以及兩個offer_id
12和14在日期'2017-01-25'中有1個在closed
和offer_id
8.我不想顯示room_id
8和offer_id
12如果有行包含值1
我該怎麼做?
謝謝。
你有一個條件 - > x.closed = 0,在你的查詢中你會得到所有關閉的記錄= 0 –
你知道嗎。但是,我希望在輸入的日期範圍內,如果在coloumn中存在值1,我不想顯示所有記錄@RafaelShkembi – Antonio
查詢有什麼問題?輸出是什麼?你期待什麼輸出? – shmosel