mysql - 如何将多个select语句合并到一个表中

标签 mysql sql stored-procedures ssms

我正在创建一个存储过程,它通过计算每个选择的选票来查看民意测验答案的结果,但是当我运行它时,每个选择语句都在单个表中,但我希望结果在单个表中,而每个选择语句是一个专栏,任何人都知道该怎么做。谢谢 :) 那是我的代码:

CREATE PROC view_pollresult
 @myemail VARCHAR (30),
 @course_ID INT,
 @poll_ID INT 
 AS
 IF @myemail = (SELECT page_creator FROM Course_pages WHERE course_ID = @course_ID OR @myemail IN (SELECT added_email
 FROM Lecturers_Adds_Academics_Course_page WHERE course_ID = @course_ID))
 BEGIN
 SELECT COUNT(choice) FROM Students_Answers_Polls AS choice1_results
 WHERE poll_ID = @poll_ID AND course_page = @course_ID
 AND choice = (SELECT choice1 FROM Polls WHERE poll_ID = @poll_ID) 
 SELECT COUNT(choice) FROM Students_Answers_Polls AS choice2_results
 WHERE poll_ID = @poll_ID AND course_page = @course_ID
 AND choice = (SELECT choice2 FROM Polls WHERE poll_ID = @poll_ID) 
 SELECT COUNT(choice) FROM Students_Answers_Polls AS choice3_results
 WHERE poll_ID = @poll_ID AND course_page = @course_ID
 AND choice = (SELECT choice3 FROM Polls WHERE poll_ID = @poll_ID) 
 SELECT COUNT(choice) FROM Students_Answers_Polls AS choice4_results
 WHERE poll_ID = @poll_ID AND course_page = @course_ID
 AND choice = (SELECT choice4 FROM Polls WHERE poll_ID = @poll_ID) 
 SELECT COUNT(choice) FROM Students_Answers_Polls AS choice5_results
 WHERE poll_ID = @poll_ID AND course_page = @course_ID
 AND choice = (SELECT choice5 FROM Polls WHERE poll_ID = @poll_ID) 
 END

最佳答案

只做一个声明:

SELECT 
    SUM(case when results.choice = p.choice1 then 1 else 0 end) as Choice1Count,
    SUM(case when results.choice = p.choice2 then 1 else 0 end) as Choice2Count,
    SUM(case when results.choice = p.choice3 then 1 else 0 end) as Choice3Count,
    SUM(case when results.choice = p.choice4 then 1 else 0 end) as Choice4Count,
    SUM(case when results.choice = p.choice5 then 1 else 0 end) as Choice5Count
FROM 
    Students_Answers_Polls AS results
    inner join Polls p on
        results.poll_id = p.poll_id
        and results.choice in (p.choice1, p.choice2, p.choice3, p.choice4, p.choice5)
WHERE 
    results.poll_ID = @poll_ID 
    AND course_page = @course_ID

关于mysql - 如何将多个select语句合并到一个表中,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8684387/

相关文章:

mysql - 基于日期的动态表名

java - 使用数组作为参数调用存储过程

MySQL - 跨多个表的算术

php - ODBC更改json数组格式

mysql - 加速 perl DBI fetchrow_hashref

java - 从 Java 应用程序调用时,存储过程不会保留写入的表

oracle - 从触发器中捕获包/过程/函数名称

php - 是否可以为日期制作一个内容可编辑的表格单元格?

php - mysql 获取所有其他行如何从同一个表中获得相同的 id

php - Mysql记录用户的好恶