Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/71.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 如何编写此基本sql语句_Mysql_Sql - Fatal编程技术网

Mysql 如何编写此基本sql语句

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

所以我有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 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 ... 由马斯特爵士提供…奇怪。。。计数似乎不准确。。。还是只有我一个人?计数不准确,因为它是从错误的表中计数的。如果这个答案没有提供所需的输出,为什么要将其标记为答案?是的。。我选择了另一个更准确的。奇怪。。。计数似乎不准确。。。还是只有我一个人?计数不准确,因为它是从错误的表中计数的。如果这个答案没有提供所需的输出,为什么要将其标记为答案?是的。。我选择了另一个更准确的。奇怪。。。计数似乎不准确。。。还是只有我一个人?计数不准确,因为它是从错误的表中计数的。如果这个答案没有提供所需的输出,为什么要将其标记为答案?是的。。我选择了另一个更准确的。奇怪。。。计数似乎不准确。。。还是只有我一个人?计数不准确,因为它是从错误的表中计数的。如果这个答案没有提供所需的输出,为什么要将其标记为答案?是的。。我选择了另一个