Выберите процент строк из таблицы SQL?

У меня есть сайт с PHP-скриптом, у этого скрипта есть SQL-запрос внутри, возвращающий данные, к которым обращается файл JavaScript. Эти данные представляют собой огромный список данных о рейсах, и мне нужно иметь возможность выбирать (скажем, случайные 40% от общего количества рейсов за любой указанный день). Для аргументов давайте скажем так:

$query = "SELECT * FROM `Flight_Data` WHERE DepDateTimeUTC LIKE '%1/1/14%' ";

Я понимаю, что для получения случайного числа строк вы просто используете ORDER BY RAND() LIMIT 40' и в идеале хочу сказать LIMIT 40% но это не работает

РЕДАКТИРОВАТЬ:

$query = "SELECT * FROM `Flight_Data` WHERE DepDateTimeUTC LIKE '%1/1/14%' ";
$row = mysqli_fetch_row($result);
$total = $row[0];
$percent = $total * 0.40;
$query = "SELECT * FROM `Flight_Data` WHERE DepDateTimeUTC LIKE '%1/1/14%' LIMIT . $percent ";

7

Решение

Вы можете COUNT все записи, а затем рассчитать % тебе нужно вот так:

$query = "SELECT COUNT(*) FROM `Flight_Data` WHERE DepDateTimeUTC LIKE '%1/1/14%' ";
$result = mysqli_query($connection,$query);
$row = mysqli_fetch_row($result));

$total = $row[0];
$percent = intval($total * 0.40);

$query = "SELECT * FROM `Flight_Data` WHERE DepDateTimeUTC LIKE '%1/1/14%' LIMIT ". $percent;
//execute your query....
4

Другие решения

Поскольку вы используете php-скрипт, вы сможете достичь того, чего хотите. Что вы можете сделать, так это получить общее количество строк в таблице, которое выглядит следующим образом:

SELECT count(*) AS Total FROM Flight_Data

С помощью php вы можете рассчитать 40% от общей суммы.

Допустим, $ myPercent содержит рассчитанные 40% от общего числа. Вы можете использовать значение $ myPercent в пределе как

$query = "SELECT * FROM `Flight_Data`
WHERE DepDateTimeUTC LIKE '%1/1/14%'
LIMIT ".$myPercent;

Здесь мы экранируем переменную php из строки запроса mysql, что является хорошей практикой.

В MySQL, % используется как подстановочный знак, поэтому он не может быть использован так, как вы думали, что вы можете в пределе.

Надеюсь, это помогло вам.

3

По вопросам рекламы [email protected]