Mysql 如何编写此基本sql语句
所以我有4个表,它们通过外键连接,即结果、位置、学生、候选人 我需要做到的是: 输出: 。。计算在“结果”表中重复c_id的次数,该表也通过“候选”表中的pos_id进行过滤 下面是我的代码,缺少计数部分:Mysql 如何编写此基本sql语句,mysql,sql,Mysql,Sql,所以我有4个表,它们通过外键连接,即结果、位置、学生、候选人 我需要做到的是: 输出: 。。计算在“结果”表中重复c_id的次数,该表也通过“候选”表中的pos_id进行过滤 下面是我的代码,缺少计数部分: select s_fname from results, candidates, student, positioning where results.c_id = candidates.c_id AND student.sid = results.sid AND candi
select s_fname
from results, candidates, student, positioning
where results.c_id = candidates.c_id
AND student.sid = results.sid
AND candidates.pos_id = positioning.pos_id
AND positioning.pos_id = 1
Group BY results.sid;
…我知道它缺少很多东西
谢谢
这对我来说似乎很复杂,但我知道这里有一些大师可以做到这一点
结果表
---------------------
| r_id | sid | c_id |
---------------------
1 | 1 | 1
2 | 1 | 2
3 | 1 | 4
4 | 2 | 1
5 | 2 | 2
6 | 2 | 4
7 | 3 | 3
8 | 3 | 2
9 | 5 | 3
10 | 5 | 2
----------------------
student table
----------------
| s_id| s_fname|
----------------
1 | Mark
2 | Jorge
3 | France
4 | James
--------------------
Candidates Table
------------------------
| c_id | sid | pos_id
------------------------
1 | 1 | 1
2 | 2 | 2
3 | 4 | 3
4 | 3 | 1
5 | 5 | 2
----------------------
positioning Table
-----------------------
| pos_id | po_name |
-----------------------
1 | President
2 | Vice President
3 | Secretary
4 | Treasurer
这是未经测试的,但应返回预期结果 它所做的是在相关的
外键
上联接所有表,有效地提供一个包含所有列的宽表。然后我们限制竞选总统
职位的候选人
。由于计数聚合
我们需要分组
,因此我们在名称
上进行分组
。count
应该反映他们获得的投票数,因为与结果
表之间存在一对多关系
SELECT s_fname, Count(*)
FROM studentTable st
INNER JOIN Candidates c On c.sid = st.s_ID
INNER JOIN positioning p on c.pos_ID = p.pos_ID
INNER JOIN results r on st.s_ID = r.s_ID
WHERE po_Name = "President"
GROUP BY s_Fname
由于对预期联接的误解,下面的查询应该显示适当的结果
SELECT s_fname, Count(*)
FROM studentTable st
INNER JOIN Candidates c On c.sid = st.s_ID
INNER JOIN positioning p on c.pos_ID = p.pos_ID
INNER JOIN results r on c.c_ID = r.c_ID
WHERE po_Name = "President"
GROUP BY s_Fname
这是未经测试的,但应返回预期结果
它所做的是在相关的外键
上联接所有表,有效地提供一个包含所有列的宽表。然后我们限制竞选总统
职位的候选人
。由于计数聚合
我们需要分组
,因此我们在名称
上进行分组
。count
应该反映他们获得的投票数,因为与结果
表之间存在一对多关系
SELECT s_fname, Count(*)
FROM studentTable st
INNER JOIN Candidates c On c.sid = st.s_ID
INNER JOIN positioning p on c.pos_ID = p.pos_ID
INNER JOIN results r on st.s_ID = r.s_ID
WHERE po_Name = "President"
GROUP BY s_Fname
由于对预期联接的误解,下面的查询应该显示适当的结果
SELECT s_fname, Count(*)
FROM studentTable st
INNER JOIN Candidates c On c.sid = st.s_ID
INNER JOIN positioning p on c.pos_ID = p.pos_ID
INNER JOIN results r on c.c_ID = r.c_ID
WHERE po_Name = "President"
GROUP BY s_Fname
这是未经测试的,但应返回预期结果
它所做的是在相关的外键
上联接所有表,有效地提供一个包含所有列的宽表。然后我们限制竞选总统
职位的候选人
。由于计数聚合
我们需要分组
,因此我们在名称
上进行分组
。count
应该反映他们获得的投票数,因为与结果
表之间存在一对多关系
SELECT s_fname, Count(*)
FROM studentTable st
INNER JOIN Candidates c On c.sid = st.s_ID
INNER JOIN positioning p on c.pos_ID = p.pos_ID
INNER JOIN results r on st.s_ID = r.s_ID
WHERE po_Name = "President"
GROUP BY s_Fname
由于对预期联接的误解,下面的查询应该显示适当的结果
SELECT s_fname, Count(*)
FROM studentTable st
INNER JOIN Candidates c On c.sid = st.s_ID
INNER JOIN positioning p on c.pos_ID = p.pos_ID
INNER JOIN results r on c.c_ID = r.c_ID
WHERE po_Name = "President"
GROUP BY s_Fname
这是未经测试的,但应返回预期结果
它所做的是在相关的外键
上联接所有表,有效地提供一个包含所有列的宽表。然后我们限制竞选总统
职位的候选人
。由于计数聚合
我们需要分组
,因此我们在名称
上进行分组
。count
应该反映他们获得的投票数,因为与结果
表之间存在一对多关系
SELECT s_fname, Count(*)
FROM studentTable st
INNER JOIN Candidates c On c.sid = st.s_ID
INNER JOIN positioning p on c.pos_ID = p.pos_ID
INNER JOIN results r on st.s_ID = r.s_ID
WHERE po_Name = "President"
GROUP BY s_Fname
由于对预期联接的误解,下面的查询应该显示适当的结果
SELECT s_fname, Count(*)
FROM studentTable st
INNER JOIN Candidates c On c.sid = st.s_ID
INNER JOIN positioning p on c.pos_ID = p.pos_ID
INNER JOIN results r on c.c_ID = r.c_ID
WHERE po_Name = "President"
GROUP BY s_Fname
代码:
代码:
代码:
代码:
如果您创建一个SQL FIDLE并输入数据,那么人们就可以使用它,我会提供帮助。以纯文本形式发布数据需要人们手动输入…@boristescapder True,但至少在sqlfiddle上有一个text-to-ddl选项,使事情变得更简单。至少他们提供了一些data@BoristheSpider ... 由maszter爵士提供……如果您创建一个SQL FIDLE并输入数据,那么人们就可以使用它,我会提供帮助。以纯文本形式发布数据需要人们手动输入…@boristescapder True,但至少在sqlfiddle上有一个text-to-ddl选项,使事情变得更简单。至少他们提供了一些data@BoristheSpider ... 由maszter爵士提供……如果您创建一个SQL FIDLE并输入数据,那么人们就可以使用它,我会提供帮助。以纯文本形式发布数据需要人们手动输入…@boristescapder True,但至少在sqlfiddle上有一个text-to-ddl选项,使事情变得更简单。至少他们提供了一些data@BoristheSpider ... 由maszter爵士提供……如果您创建一个SQL FIDLE并输入数据,那么人们就可以使用它,我会提供帮助。以纯文本形式发布数据需要人们手动输入…@boristescapder True,但至少在sqlfiddle上有一个text-to-ddl选项,使事情变得更简单。至少他们提供了一些data@BoristheSpider ... 由马斯特爵士提供…奇怪。。。计数似乎不准确。。。还是只有我一个人?计数不准确,因为它是从错误的表中计数的。如果这个答案没有提供所需的输出,为什么要将其标记为答案?是的。。我选择了另一个更准确的。奇怪。。。计数似乎不准确。。。还是只有我一个人?计数不准确,因为它是从错误的表中计数的。如果这个答案没有提供所需的输出,为什么要将其标记为答案?是的。。我选择了另一个更准确的。奇怪。。。计数似乎不准确。。。还是只有我一个人?计数不准确,因为它是从错误的表中计数的。如果这个答案没有提供所需的输出,为什么要将其标记为答案?是的。。我选择了另一个更准确的。奇怪。。。计数似乎不准确。。。还是只有我一个人?计数不准确,因为它是从错误的表中计数的。如果这个答案没有提供所需的输出,为什么要将其标记为答案?是的。。我选择了另一个