我有两张桌子:projects和user_licenses.
我想从数据库中获取整个项目列表,以及用户当前的许可证状态.许可证表有一个用户ID字段,我根据$_SESSION该值检查变量.问题是,他们可能没有许可证,或者未登录的访问者可能希望查看项目列表.我的问题是:如何始终显示左表中的数据,但只有在满足某些条件时才从右表中获取该行的数据?
我目前的查询是这样的:
SELECT Projects.*,
UserLicenses.*
FROM Projects
LEFT JOIN UserLicenses ON Projects.id = UserLicenses.project_id
WHERE UserLicenses.user_id = 12
ORDER BY name ASC
Run Code Online (Sandbox Code Playgroud)
And*_*mar 42
将任何额外条件添加到on左连接的子句中.它们只会影响连接表.
SELECT Projects.*,
UserLicenses.*
FROM Projects
LEFT JOIN UserLicenses
ON Projects.id = UserLicenses.project_id
and UserLicenses.user_id = 12
and UserLicences.Question = '6*7'
and UserLicences.Answer = 42
ORDER BY name ASC
Run Code Online (Sandbox Code Playgroud)
这将返回没有匹配许可证的项目.
| 归档时间: |
|
| 查看次数: |
14147 次 |
| 最近记录: |