Выберите среднюю цену из выбранного продукта и эхо

У меня есть база данных виски с ценами продажи в течение определенного периода времени. В моей базе данных есть имя, цена URL и идентификатор.

У меня довольно много виски с одинаковыми названиями, но цены продажи разные. В настоящее время, когда кто-то выполняет поиск, он выводит его на страницу результатов поиска, на которой показан продукт, который он искал.

То, что я пытаюсь сделать, это когда кто-то нажимает на ссылку, чтобы увидеть полную информацию, я хотел бы иметь возможность показать среднюю цену для всех виски, которые под этим названием, но я изо всех сил, как вы, вероятно, видите. Это ressult.php У меня проблема со всем, что я получаю, это £. Кажется, я потерял имя и URL
и не получаю имя url_img или Средняя цена (которую я пытаюсь рассчитать. Но моя цель — получить среднюю цену, которую нужно показать.

search.php

$stmt = $conn->prepare("SELECT * FROM test_db WHERE name LIKE :name ORDER BY name ASC"); // Use = instead of LIKE for full matching
$stmt->bindParam(':name', $search);
$stmt->execute();
$count = $stmt->rowCount(); // Added to count no. of results returned

if ($count >= 1) { // Only displays results if $count is 1 or more

echo "<div class='results_found'>";
echo $count;
echo " results found<br>";
echo "</div>";

while ($row = $stmt->fetch(PDO::FETCH_ASSOC)) {

echo "<div class='results'>";
echo "<div class='result_name'>";
echo "<b>Whisky Name:</b><br>";
echo "<a href='details1.php?id={$row['lot_id']}' >{$row['name']}</a>";
echo "</div>";
echo "</div>";
}

} else {
echo " Sorry no records were found";
}

?>

**results.php**

<?php

$page='details';
include('header.php');
include ('navbar.php');
include ('connect.php');

if (isset($_GET['id'])) {
$sql = "SELECT name , AVG(price) , url_img , price FROM test_db JOIN (SELECT name, AVG(price) as avprice FROM test_db GROUP BY name) avcalc USING (name)
WHERE lot_id = :id";
$stmt = $conn->prepare($sql);
$stmt->execute( [ 'id' => $_GET['id'] ] );
$row = $stmt->fetch();
echo $row['name'];
echo '<br>';
echo '£';
echo $row['price'];
echo '<br>';
echo "<img src='".$row ['url_img']."' /><br />";
echo $row['avg'];

}

?>

0

Решение

Я думаю, что вы ищете это:

SELECT `name`, AVG(price) as avg_price FROM `whisky` GROUP BY `name`

Исходные данные таблицы:

Оригинальный стол

Результат для этого вопроса:

Результат

Если вы хотите только одну цену, вы можете расширить этот запрос для ГДЕ имя = whisky

Avg сейчас находится в: $ row [‘avg_price’]

1

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

Вы подали заявку присоединиться запрос, но вы получаете AVG (цена) вместо avgprice который представлен в первой таблице test_db.
Вам нужно создать псевдоним другого test_db.
Изменить эту строку

$sql = "SELECT name , AVG(price) , url_img , avprice FROM test_db JOIN (SELECT name, AVG(price) as avprice FROM test_db GROUP BY name) avcalc USING (name) WHERE lot_id = :id";

К этому

$sql = "SELECT name , avcalc.avgprice , url_img , avprice FROM test_db JOIN (SELECT name, AVG(price) as avprice FROM test_db GROUP BY name) avcalc USING (name) WHERE lot_id = :id";

0

Понял,

if (isset($_GET['id'])) {
$sql = "SELECT name
, price
, url_img
, avprice
FROM test_db
JOIN (
SELECT name
, AVG(price) as avprice
FROM test_db
GROUP BY name
) avcalc USING (name)
WHERE lot_id = :id";
$stmt = $conn->prepare($sql);
$stmt->execute( [ 'id' => $_GET['id'] ] );
$row = $stmt->fetch();
echo "{$row['name']}<br>
&pound;{$row['price']}<br>
<img src='{$row['url_img']}'/><br>
{$row['avprice']}";
0
По вопросам рекламы ammmcru@yandex.ru
Adblock
detector