我正在开发旅游应用程序的项目中。有些项目以以下方式添加到系统中
广告(酒店,夜总会)和一些物品作为有用信息添加(沙滩,国家公园)
我有一张桌子,叫做物品。
项目
id | category_id | name | is_payment
1 | 1 | hotel califonia | 1
2 | 1 | hotel hilton | 1
3 | 2 | Yala national park | 0
4 | 2 | Kumana national park| 0
这里category_id是指类别表。
类别
id | name | type
1 | Hotels | commercial
2 | National parks | non-commercial
我想从项目表中选择所有项目。
但是,如果这是商业商品,则需要在显示给最终用户之前检查是否付款。
我不必显示我到目前为止所做的任何事情。
我虽然有CASE功能和IF功能。但我不知道如何将其与本案例研究联系起来。
我不知道该怎么做。
最佳答案
我在下面查询您是否可以收取所有非商业性物品,或者如果它是商业性物品,那么我正在检查是否也使用和运算符付款。
SELECT i.*
FROM items i
JOIN categories c
ON i.category_id = c.id
WHERE c.type != 'commercial'
OR (c.type = 'commercial' AND i.is_payment = 1)