当涉及内连接时 MySQL 条件选择

标签 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 函数。但我不知道如何将这些与这个案例研究联系起来。 我不知道该怎么做。

最佳答案

我在下面询问您是否可以接受所有非商业项目,或者如果是商业项目,那么我正在检查付款是否也使用运营商完成。

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)

关于当涉及内连接时 MySQL 条件选择,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54252989/

相关文章:

mysql - Zend 框架 - 连接查询

mysql - 根据具有匹配 ID 的另一个表的列更新一个表的列

mysql - 在 Centos 6.4 上安装 MySQL 5.6 的最佳方式

Mysql Concat 不为空值

php - 如何从 id 回显数据

python - 使用 Python 和 MySQL 通过中间查找大量插入数据

mysql - 为 Laravel 中的所有 SQL 请求添加 WHERE 条件

mysql - 我当前的任务是否需要使用完整连接来连接 mysql 中的多个表

php - 将数组元素插入数据库表时出现问题

mysql - 更新另一个表中重复的字段