【发布时间】:2021-03-05 20:05:04
【问题描述】:
我有 3 个表需要加入,但我很难获得正确的结果,因为我需要来自超过 1 个列的信息。我希望获取所有可用且状态为 1 的用户。此外,获取类型 1 和 3。将用户列为类型 3,我需要加入另一个表(按用户 ID)以仅获取用户具有另一表中列出的特定专业。
我的表格与这些类似:
users
id | status | availability | type
1 | 1 | 1 | 1
2 | 1 | 0 | 1
3 | 0 | 0 | 2
4 | 1 | 1 | 3
5 | 1 | 1 | 3
specialties
id | type
1 | 1
2 | 2
3 | 3
4 | 43
我的关系表如下所示:
rel_users_specialties
id | id_user | id_specialty
1 | 1 | 29
2 | 2 | 3
3 | 4 | 3
4 | 5 | 3
我的查询是:
SELECT *
FROM users u
JOIN rel_users_specialties r ON r.id_user = u.id
WHERE u.status = 1
AND u.disponibilidade = 1
AND r.id_specialty = 3
AND (u.type = 3 OR u.type = 1)
我的预期结果将是以下用户(按 id) 1、4 和 5(不包括用户编号 2,因为可用性 = 0)并且虽然用户 1 的专业不同于 3,但它也具有类型 1(此处的类型 1 将是一个常数,与选择的专业无关)。 感谢您的帮助!
【问题讨论】:
-
当用户 5 的 id_specialty 为 4 而不是 3 时,为什么应该进入结果。
-
我的错!会编辑。谢谢
-
问题到底是什么?
-
我的问题是我需要根据所示的表和列获得结果组合。所以我的问题是如何让用户的状态和可用性 = 1、类型 = 1 或 3,并且(如果类型 = 3)我需要知道用户专业是否 = 3。