На моем веб-сайте я хочу использовать множество разных данных из моей базы данных. В настоящее время я использую четыре запроса для сбора разных данных. Но есть ли способ сделать его более эффективным и помещать в один большой запрос? И как бы я это сделал?PHP/SQL - много запросов SQL
Редактировать: Таким образом, ответ состоял в том, чтобы просто объединить все запросы в один и использовать как можно больше манипуляций с данными в запросах базы данных, а не в php.
$qry = "SELECT COUNT(*) cnt,
AVG(level) avg_lvl,
SUM(IF(onlinestatus=1, 1, 0)) online_cnt,
(SELECT Max(time) FROM refreshes) refresh_time
FROM players";
foreach ($db->query($qry) as $row){
$amount_total = $row['cnt'];
$average_level = floor($row['avg_lvl']);
$online_amount = $row['online_cnt'];
$milliseconds = $row['refresh_time'] + 1800000;
$update_time = DateTime::createFromFormat('U', intval($milliseconds/1000));
}
Если между таблицами «rookstayers» и «refreshes» существует общий ключ, вы можете создать sql как «левое внешнее соединение» между таблицами и делать то, что хотите, с одним запросом. Без этого похоже, что это можно сделать в 2-х запросах, потому что 'select * from rookstayers' должно быть достаточно, чтобы манипулировать данными и выполнять любые вычисления, которые вы хотите в php – RamRaider
Итак, в основном просто« SELECT * FROM rookstayers' по первым трем запросам? Затем один для «освежает»? Но дело в том, что у меня также есть такие вещи, как 'WHERE something = something', не будет ли это испортить запрос для тех, которые не используют WHERE ?. У вас есть какой-нибудь пример в «левом внешнем соединении»? –
Да, первый запрос может заменить первые 3 запроса, предложение where может быть протестировано для php, а затем отдельный запрос (если вы не можете присоединиться к таблицам) для данных таблицы refreshes – RamRaider