内部连接涉及时的MySQL条件选择

时间:2019-01-18 11:24:39

标签: mysql

我正在开发一个旅游应用程序的项目中。一些项目以以下方式添加到系统中 广告(酒店,夜总会)和一些物品(例如海滩,国家公园)添加为有用的信息

我有一个名为items的表。

项目

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功能。但我不知道如何将其与本案例研究联系起来。 我不知道该怎么做。

任何帮助! 在此先感谢!

2 个答案:

答案 0 :(得分:1)

我在下面查询您是否可以带走所有非商业性物品,或者如果它是商业性物品,那么我正在检查是否也使用和运算符付款。

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)

答案 1 :(得分:0)

如果您正在寻找除上述答案以外的其他查询...

select a.* from items a join categories b on a.category_id=b.id and b.type='commercial' and a.is_payment=1
union all
select a.* from items a join categories b on a.category_id=b.id and b.type<>'commercial';