MySQL:mysqli_fetch_array()

时间:2017-12-22 23:25:10

标签: mysql

如何在同一个表中对这3个查询使用mysqli_fetch_array()?或者如何在3个查询中进行3次查询?

SELECT clinic,AVG(rating) FROM review GROUP BY clinic ORDER BY clinic
SELECT clinic,COUNT(rating) AS die FROM review WHERE rating = 1 GROUP BY clinic
SELECT clinic,COUNT(rating) AS normal FROM review WHERE rating = 7 GROUP BY clinic

2 个答案:

答案 0 :(得分:1)

您可以使用case表达式将最后两个查询中的条件移动到计算的表达式中。 count跳过null s,所以只需使用一个只返回要计算的条件的表达式:

SELECT   clinic, 
         AVG(rating),
         COUNT(CASE rating WHEN 1 THEN 1 END) AS die,
         COUNT(CASE rating WHEN 7 THEN 1 END) AS normal
FROM     review
GROUP BY clinic 
ORDER BY clinic

答案 1 :(得分:0)

您可以使用mysqli::multi_query。例如,

$query  = "SELECT CURRENT_USER();"; # Example Query
$query .= "SELECT Name FROM City ORDER BY ID LIMIT 20, 5"; # Second Example Query

/* execute multi query */
if ($mysqli->multi_query($query)) {
    do {
        /* store first result set */
        if ($result = $mysqli->store_result()) {
            while ($row = $result->fetch_row()) {
                printf("%s\n", $row[0]);
            }
            $result->free();
        }
        /* print divider */
        if ($mysqli->more_results()) {
            printf("-----------------\n");
        }
    } while ($mysqli->next_result());
}

/* close connection */
$mysqli->close();

由于StackOverflow不是代码编写服务,因此我不打算在您的情况下如何发生这种情况。尝试将其反映到您的代码中,当您遇到问题时,发布问题。

注意:示例来自mysqli::multi_query整个文档提供的链接。

祝你好运!