У меня есть таблица из 32 строк, с попарными строками, содержащими одинаковые «имена-значения», но с разными значениями малины (соответственно «один» и «два».)
Я хочу извлечь каждую строку с уникальным именем и наименьшим усредненным расстоянием — давая мне 16 строк, и для этого я использую этот запрос:
SelectFinally();
function SelectFinally (){
$con = connectToDB();
$sql = "SELECT name,MIN(average_distance),raspberry From average GROUP BY name";
$result= mysqli_query($con,$sql);
$num_rows = mysqli_num_rows($result);
echo "number of rows" .$num_rows ."<br />";
while($row=mysqli_fetch_assoc($result)) {
extract($row);
$name = $row['name'];
$distance = $row['MIN(average_distance)']; //."<br />";
$raspberry = $row['raspberry']; //."<br />";
echo "select inside selectFinally name: " .$name ." distance: " .$distance ." raspberry " .$raspberry ."<br />";}
}
Этот запрос дает мне самые низкие значения average_distance, НО он портит мои значения малины. например blå_bil должен иметь малиновое значение «два», следовательно, он имеет самое низкое значение middle_distance -.
Я не могу понять это правильно. Кто-нибудь, пожалуйста, помогите мне сделать это правильно?
пытаться:
SELECT a.name, a.raspberry
FROM average a
INNER JOIN
(
SELECT name, MIN(average_distance) as avg_dist
FROM average
GROUP BY name
) a2 ON a.name = a2.name AND a.average_distance = a2.avg_dist
Вместо SELECT name,MIN(average_distance),raspberry From average GROUP BY name
спасибо Нишант Матха
Это сработало — мне просто нужно было добавить малину в мой первый выбор. Теперь он добавляет average_distance к выводу.
$sql = "SELECT a.name, a.average_distance, a.raspberry
from average a
INNER JOIN
(
select name,MIN(average_distance) AS avg_dist,raspberry
FROM average
GROUP BY name
)
a2 ON a.name=a2.name AND a.average_distance = a2.avg_dist ";