我有两个表: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
最佳答案
将任何其他条件添加到左联接的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
这将返回没有匹配许可证的项目。