【发布时间】:2022-01-26 12:39:23
【问题描述】:
Major_applied_for 表
| id | preference | application_number (fk) | major_code (fk) |
|---|---|---|---|
| 1 | 1 | 2 | 1 |
| 2 | 1 | 1 | 1 |
| 3 | 3 | 3 | 1 |
| 4 | 2 | 1 | 2 |
| 5 | 2 | 2 | 2 |
一些说明:
• Major 表的 code 属性包含 (1)CS 用于计算机科学,(2)BMS 用于商业管理等。
• Major_Applied_For 的偏好属性是 1、2 或 3(1 表示第一个 选择,2是第二选择,3是第三选择) . . .
这是一个多对多关系解析的表,我想获取所有以CS为第一选择,BMS为第二选择的申请号。
我试过这条sql语句,但逻辑不正确。
SELECT m.id, CONCAT(m.fname, " ", m.lname) AS Fullname, app.number AS application_no FROM 申请者 m,申请者 app,major_applied_for mjaf WHERE ((mjaf.major_code = 1 AND mjaf.preference = 1) AND (mjaf.major_code = 2 AND mjaf.preference = 2) AND (mjaf.application_number = app.number AND app.applicant_id = m.id));
我该如何解决这个问题?
【问题讨论】:
-
发布所有涉及的表的完整数据样本。
-
我认为如果您使用
JOIN语句而不是在WHERE子句中加入表,这可能会更直接。但是我们不知道申请人和申请表是什么样子的。