Как использовать mysqli_fetch_array()
для этих 3 запросов в одной таблице? или как сделать этот запрос 3 в 1 запросе?
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
Вы можете использовать выражения 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
Вы можете использовать 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
.
Удачи!
mysqli_query()
отдельно для каждого запроса, и это только усложняет получение результатов.