Как вывести запросом из БД минимальное и максимальное значение?
Здраствуйте, не могу понять, объясните пожалуйста
Есть запрос к БД MySQL, через PDO:
$cmd = $this->pdo->query("SELECT id, title, category, date_added, city, in_top, language, type, building_condition, rooms, bathrooms,
MIN(price) as min($min_price), photo, photo_2, photo_3, photo_4
FROM $database_lang WHERE city = $city and in_top = $in_top
ORDER BY id $new LIMIT $entry_start, ".LIMIT_ENTRY."");
Но не могу вывести минимальную и максимальную цену (price) То есть, в поиске ставится значение, к примеру 50000 и чтобы вывелись все записи квартир у которых цена не меньше 50000
Как это реализовать?
Ответы (2 шт):
Напишу чтоб было читабельнее сам запрос а вы поставите как надо. Если я правильно понял и вам нужны сами квартиры то нужно использовать оконные функции. Так как вам нужны только min и мах то можно сделать так.
SELECT
id,
title,
category,
date_added,
city,
in_top,
language,
type,
building_condition,
rooms,
bathrooms,
price,
photo,
photo_2,
photo_3,
photo_4
FROM
$database_lang
WHERE
city = $city
and price >= 50000
ORDER BY price desc
LIMIT 1
UNION ALL
SELECT
id,
title,
category,
date_added,
city,
in_top,
language,
type,
building_condition,
rooms,
bathrooms,
price,
photo,
photo_2,
photo_3,
photo_4
FROM
$database_lang
WHERE
city = $city
and price >= 50000
ORDER BY price
LIMIT 1
Можно сделать одним запросом без union тогда нужно будет отбросить данные о квартирах и оставить только цену потому что агрегирование работает с однородными данными.
Вопрос в целом путанный и противоречащий сам себе, но если отвечать буквально, то надо запросить минимальное и максимальное значение цены
$sql = "SELECT min(price), max(price) FROM database_lang WHERE price > ?";
$stmt = $this->pdo->prepare($sql);
$stmt->execute([$price]);
list($min, $max) = $stmt->fetch(PDO::FETCH_ROW);
По желанию можно добавить в запрос другие условия
То есть если нужно получить минимальное и максимальное значение цен, которые будут в выборке по заданным условиям без лимита, то надо выполнить отдельный запрос.