【问题标题】:Count and display same value but different entry计数并显示相同的值但不同的条目
【发布时间】:2021-11-30 15:28:55
【问题描述】:

基本上这是一个调查系统,我想从我的结果表中计算是和否,该表有

  | q1  | q2  | q3 | q4 | q5 | q6  | q7 | q8  | q9  | q10 |

  | Yes | Yes | No | No | No | Yes | No | Yes | Yes | No  |

  | No | Yes | No | Yes | Yes | Yes | No | No  | Yes | No |

  | Yes | Yes | No | No | No | Yes | No | Yes | Yes | No  |

  | No | Yes | No | Yes | Yes | Yes | No | No  | Yes | No |

例如,我希望我的结果是 q1 = 2 No's 2 Yes 和 q2 = 4 yes 0 No's 等等 然后在那之后我希望将它显示在一个简单的表格中,但我仍然对查询一无所知


<body>
    <form method="POST">
        <table border="1">
            <tr>
                <th>Answered Yes</th>
                <th>Answered No</th>
            </tr>
            <?php
            include("testdb.php");
            $result= mysqli_query($con, "SELECT * FROM results");
            if($result){
            ?>
        </table>
    </form>
</body>

【问题讨论】:

标签: php mysql sql


【解决方案1】:

MySql 查询

SELECT 
(SELECT count(q1) FROM questions WHERE q1 = 'yes') AS q1y,
(SELECT count(q1) FROM questions WHERE q1 = 'no') AS q1n,
(SELECT count(q2) FROM questions WHERE q2 = 'yes') AS q2y,
(SELECT count(q2) FROM questions WHERE q2 = 'no') AS q2n
FROM questions
LIMIT 0,1;

对于你的代码

    <body>

    <form method="POST">


        <table border="1">

                <th>Answered Yes</th>
                <th>Answered No</th>
            </tr>

            <?php
            include("testdb.php");
            $result= mysqli_query($con, "SELECT 
    (SELECT count(q1) FROM questions WHERE q1 = 'yes') AS q1y,
    (SELECT count(q1) FROM questions WHERE q1 = 'no') AS q1n,
    (SELECT count(q2) FROM questions WHERE q2 = 'yes') AS q2y,
    (SELECT count(q2) FROM questions WHERE q2 = 'no') AS q2n
    FROM questions
    LIMIT 0,1;");

            if($result){
$obj = $result->fetch_object();
echo '<tr><td>Question 1 '.$obj->q1y.'Yes</td><td>Question 1 '.$obj->q1n.'No</td></tr>';
echo '<tr><td>Question 2 '.$obj->q2y.'Yes</td><td>Question 2 '.$obj->q2n.'No</td></tr>';    
            ?>


        </table>

    </body>

【讨论】:

  • 我会测试这个先生谢谢!我想知道你是否也可以教我如何显示它,如 q1 = 2 Yes 2 No, q2 = 4 Yes 0 No 等等@abbas
  • @pinoy 你可以使用 shmosel 推荐的查询。我认为查询更有效。
  • 非常感谢@abbas,这非常有效!是的,就像你说的那样,我使用了 shmosels 查询。感谢您抽出宝贵时间!
  • @ranger 我很高兴它可以提供帮助。但我不知道为什么我得到了-ve 投票:)
  • 我点击了你答案的验收检查我不知道为什么会这样@abbas
【解决方案2】:
SELECT SUM(q1 = 'Yes') AS q1yes
     , SUM(q1 = 'No') AS q1no
     , SUM(q2 = 'Yes') AS q2yes
     , SUM(q2 = 'No') AS q2no
     ...
  FROM results;

【讨论】:

  • 那么我将如何显示这个只是为了测试?
  • @pinoy 随你喜欢。
  • 我计划它显示为 Q1 的 2 yes 2 no,Q2 的 4 yes 0 No 等等。先生,您能告诉我怎么做吗?
  • @pinoy 不,不是。你问了一个 SQL 问题,我回答了。显示数据取决于您使用的客户端和驱动程序,我不是很熟悉。
【解决方案3】:
SELECT 
 SUM(if q1 = 'Yes',1,0) AS q1yes,
 SUM(if q1 = 'No',1,0) AS q1no,
 SUM(if q2 = 'Yes',1,0) AS q2yes,
 SUM(if q2 = 'No',1,0) AS q2no
FROM questions
LIMIT 1;

你试过用 if 计数吗?

注意:使用整数 (0,1) 之类的值代替字符串可以得到更合乎逻辑和更快的结果。

【讨论】:

  • 正如目前所写,您的答案尚不清楚。请edit 添加其他详细信息,以帮助其他人了解这如何解决所提出的问题。你可以找到更多关于如何写好答案的信息in the help center
猜你喜欢
  • 2023-03-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-04-02
  • 1970-01-01
  • 1970-01-01
  • 2013-12-22
  • 1970-01-01
相关资源
最近更新 更多