我有一些像这样的表结构。
表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
我想用if条件查询所有房间。我出示了带日期入住和退房日期的房间。
在表格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
这是一个简单的查询,因为我不知道如果条件有问题,可以进行一些查询。
请有人帮我这样做。谢谢。
答案 0 :(得分:0)
请使用mysql CASE ... THEN ... END语句获取结果
答案 1 :(得分:0)
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'