[英]Return query result with if condition
我有一些像這樣的表結構。
table property_day
propday_id | date | property_id | check_in | check_out
------------------------------------------------------
1 | 2017-03-26 | 5 | 0 | 0
2 | 2017-03-27 | 5 | 0 | 0
3 | 2017-03-28 | 5 | 0 | 0
4 | 2017-03-29 | 5 | 0 | 0
rooms
room_id | name | property_id
----------------------------
1 | Deluxe | 5
2 | Superior | 5
3 | Executive | 5
我想用查詢中的條件顯示所有房間。 我出示了帶日期入住和日期退房的房間。
在表property_day
列中, check_in和check_out用於表示客人在該日期無法辦理登機手續或在該日期無法辦理退房手續或無法在該日期辦理入住和退房手續。 值0表示客人可以辦理入住或退房,但值1表示客人無法辦理入住或退房手續。
這是if條件:
check_in
和check_out
的值在該日期為0 ,我想在property_id
5中顯示所有房間。 check_in
值為1 ,我不想顯示所有房間。 check_out
值為1 ,我也不想顯示所有房間。 check_in
和check_out
值為1 ,我想顯示所有房間。 check_in
和check_out
值為0 ,我還想顯示所有房間。 這是條件號1的表結構:
propday_id | date | property_id | check_in | check_out
------------------------------------------------------
1 | 2017-03-26 | 5 | 0 | 0
2 | 2017-03-27 | 5 | 0 | 0
3 | 2017-03-28 | 5 | 0 | 0
4 | 2017-03-29 | 5 | 0 | 0
這是條件號2的表結構:
propday_id | date | property_id | check_in | check_out
------------------------------------------------------
1 | 2017-03-26 | 5 | 0 | 0
2 | 2017-03-27 | 5 | 1 | 0
3 | 2017-03-28 | 5 | 0 | 0
4 | 2017-03-29 | 5 | 0 | 0
這是條件號3的表結構:
propday_id | date | property_id | check_in | check_out
------------------------------------------------------
1 | 2017-03-26 | 5 | 0 | 0
2 | 2017-03-27 | 5 | 0 | 0
3 | 2017-03-28 | 5 | 0 | 1
4 | 2017-03-29 | 5 | 0 | 0
這是條件號4的表結構:
propday_id | date | property_id | check_in | check_out
------------------------------------------------------
1 | 2017-03-26 | 5 | 0 | 0
2 | 2017-03-27 | 5 | 0 | 0
3 | 2017-03-28 | 5 | 1 | 1
4 | 2017-03-29 | 5 | 0 | 0
這是條件號5的表結構:
propday_id | date | property_id | check_in | check_out
------------------------------------------------------
1 | 2017-03-26 | 5 | 0 | 0
2 | 2017-03-27 | 5 | 0 | 0
3 | 2017-03-28 | 5 | 0 | 0
4 | 2017-03-29 | 5 | 0 | 0
這是我已經嘗試但不會給出我想要的結果的查詢。
SELECT p.*, r.*
FROM property_day p
JOIN rooms r on p.property_id = r.property_id
WHERE p.property_id = 5 AND p.check_in = 0 OR p.check_out = 0
這是一個簡單的查詢,因為我不知道如果條件有問題的話。
請有人幫我這樣做。 謝謝。
請使用mysql CASE ... THEN ... END語句來獲得結果
IF()
mysql語法如下:
您可以創建如下示例的語句。 我沒有測試過,但是如果有效,那就好了。 如果您找到了達到理想結果的最佳方法,您可以重新考慮它。 我沒有將check_in
和check_out
的條件包含在值1和0中,因為它們令人困惑並導致我不知道(在我理解你的條件的情況下),但如果你堅持,你可以添加它們:
SELECT p.property_id,
IF(p.date = '2017-03-27' OR p.date = '2017-03-28',
IF(p.property_id = 5,
r.name,
'---'
),
IF(p.date = '2017-03-29',
r.name,
'---'
)
) AS your_result
FROM property_day p
JOIN rooms r on p.property_id = r.property_id
WHERE p.date >= '2017-03-27' AND p.date <= '2017-03-29'
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.