|
|
|
| Как правильно составить запрос для того чтобы выводилось минимальное значение столбца.
Ну и соответственно, максимальное значение для другого запроса. | |
|
|
|
|
|
|
|
для: Vova
(19.01.2006 в 12:59)
| |
SELECT MIN(pole) FROM table
|
SELECT MAX(pole) FROM table
|
| |
|
|
|
|
|
|
|
для: Vova
(19.01.2006 в 12:59)
| | Это зависит от данных, которые помещены в таблицу и того, какие данные необходимо извлечь. Обычно прибегают к двум запросам, сначала извлекают максимальное значение
Затем полученное значение используют во втором запросе в WHERE-условии
SELECT * FROM tbl WHERE val = $val
|
Если у вас MySQL 4.1 и выше, вы можете прибегнуть к вложенным запросам
SELECT * FROM tbl WHERE val = (SELECT MIN(val) FROM tbl)
|
| |
|
|
|
|
|
|
|
для: cheops
(19.01.2006 в 13:46)
| | Значения у меня цифры, а MySQL - 4.0.26. | |
|
|
|
|
|
|
|
для: Vova
(19.01.2006 в 14:12)
| | В этом запросе SELECT MIN(pole) FROM table pole - это название столбца из которого мне нужно извлечь минимальное значение?
Т.е. мне нужно вывести не само это мин значение, а всю строчку, в одном из столбцов которой содержиться минимальное число.
Например, такая таблица
a b c d
q 9 e r
z 3 c v
a 7 s f
И мне нужно вывести строчку "z 3 c v" , содержащее минимальное значение (3) в столбце b.
Пробовал SELECT MIN(pole) FROM table , где под pole подставлял имя столбца, но выводит пустую чистую строку ... | |
|
|
|
|
|
|
|
для: Vova
(19.01.2006 в 14:57)
| | >Пробовал SELECT MIN(pole) FROM table
А где пробовали и как обращались к результату? | |
|
|
|
|
|
|
|
для: cheops
(19.01.2006 в 18:03)
| | Ну вот, у меня вот такой код, который выводит целиком всю таблицу.
Пробовал здесь вставлять $query = "SELECT MAX(min) FROM catalog_ssh"; не получается.
$query = "SELECT * FROM catalog_ssh WHERE id_parent=".$_GET['id_parent']."
ORDER BY pos";
$ctg = mysql_query($query);
if(!$ctg) puterror("Ошибка");
echo "<tr class='tableheadercat'>
<td align=center><p class=help>A</td>
<td align=center><p class=help>B</td>
<td align=center><p class=help>C</td>
<td align=center><p class=help>D</td>
<td align=center><p class=help>E, xls</td>
<td align=center><p class=help>F</td>
</tr>";
while($cat = mysql_fetch_array($ctg))
{
if($cat['hide'] == 'hide')
{
$strhide = "<a href=showcat.php?id_catalog=".$cat['id_catalog']."&id_parent=".$_GET['id_parent'].">E</a>";
}
else
{
$strhide = "<a href=hidecat.php?id_catalog=".$cat['id_catalog']."&id_parent=".$_GET['id_parent'].">H</a>";
}
echo "<tr>
<td align=center><p> ".$cat['description']."</td>
<td align=center><p><b> $".$cat['min']."</b></td>
<td align=center><p> ".$cat['name']."</td>
<td align=center><p> ".$cat['deystvuet']."</td>
<td align=center><p> <a href=".$cat['down'].">".$cat['name']."</td>
<td><p> ".$cat['prim']."</td>
</tr>";
}
}
echo "</table>";
?>
|
Как можно в этом коде или на основе этого кода организовать вывод строчки, с минимальным значением в столбце "С"? | |
|
|
|
|
|
|
|
для: Vova
(19.01.2006 в 18:40)
| | Дело в том, что запрос
<?php
$query = "SELECT MAX(min) FROM catalog_ssh"; не получается.
?>
|
возвращает одну строку и обрабатывать её следует примерно так
<?php
$max = mysql_query($query);
if(!$max) exit(mysql_error());
echo mysql_result($max, 0);
?>
|
| |
|
|
|
|
|
|
|
для: cheops
(20.01.2006 в 00:48)
| | Вот такой код сделал, всё работает, выводя минимальное значение:
<?
$query = "SELECT MIN(min) FROM catalog";
$ctg = mysql_query($query);
if(!$ctg) puterror("Ошибка");
?>
<?php
$max = mysql_query($query);
if(!$max) exit(mysql_error());
echo " ";
echo "*Текст - ";
echo
mysql_result($max, 0);
?>
|
А каким образом сделать, чтобы выводилась вся строка, в которой находиться это минимальное значение? Допустим, если у меня таблица
a b c
q 7 r
w 2 t
e 3 y
Допустим мы вычислили минимальное значение - "2", а как вывести всю строку - "w 2 t" ? | |
|
|
|
|
|
|
|
для: Vova
(23.01.2006 в 11:36)
| | Смотри третий пост | |
|
|
|
|
|
|
|
для: Vova
(23.01.2006 в 11:36)
| | Так как у вас MySQL версии 4.0.26. минимальное значение следует поместить в переменную $val и подставить во второй запрос
<?php
$val = mysql_result($max, 0);
$query = "SELECT * FROM catalog WHERE val = $val";
$ctg = mysql_query($query);
if(!$ctg) puterror("Ошибка");
$result = mysql_fetch_array($ctg);
echo $result['val'];
?>
|
| |
|
|
|
|
|
|
|
для: cheops
(23.01.2006 в 13:39)
| | Поместил в код
<?php
$query = "SELECT MIN(min) FROM catalog";
$ctg = mysql_query($query);
if(!$ctg) puterror("Ошибка");
?>
<?php
$min = mysql_query($query);
if(!$min) exit(mysql_error());
echo " ";
echo "Текст - ";
echo " ";
echo
mysql_result($min, 0);
?>
<?php
$val = mysql_result($min, 0);
$query = "SELECT * FROM catalog val = $val";
$ctg = mysql_query($query);
if(!$ctg) puterror("Ошибка");
$result = mysql_fetch_array($ctg);
echo $result['val'];
?>
|
Первым запросом правильно выводит минимальное значение, но второй запрос на срабатывает: выдает "Ошибка". | |
|
|
|
|
|
|
|
для: Vova
(30.01.2006 в 13:45)
| | Исправьте строку после второго запроса с
if(!$ctg) puterror("Ошибка");
|
на
if(!$ctg) puterror("Ошибка".mysql_error());
|
что пишет? | |
|
|
|
|
|
|
|
для: cheops
(30.01.2006 в 14:39)
| | ОшибкаYou have an error in your SQL syntax. Check the manual that corresponds to your MySQL server version for the right syntax to use near '= 173' at line 1
173 - это вычисленное минимальное значение. | |
|
|
|
|
|
|
|
для: Vova
(30.01.2006 в 15:14)
| | А столбец val точно существует? Ведь в первом запросе у вас используется столбец с именем min. | |
|
|
|
|
|
|
|
для: cheops
(30.01.2006 в 22:19)
| | я конечно дико извиняюсь, но не является ли min зарезерверованным словом? А если таки является, то не надо ли его брать в обратные кавычки?
А ошибка вот тут:
$query = "SELECT * FROM catalog val = $val";
|
а надо
$query = "SELECT * FROM catalog WHERE val = $val";
|
| |
|
|
|
|
|
|
|
для: Loki
(30.01.2006 в 22:50)
| | Хм... дейстивительно, слона-то я не заметил :))) | |
|
|
|
|
|
|
|
для: cheops
(31.01.2006 в 03:14)
| | Вот такой код
<?php
$query = "SELECT MIN(min) FROM catalog";
$ctg = mysql_query($query);
if(!$ctg) puterror("Ошибка");
?>
<?php
$min = mysql_query($query);
if(!$min) exit(mysql_error());
echo " ";
echo "Текст - ";
echo " ";
echo
mysql_result($min, 0);
?>
<?php
$val = mysql_result($min, 0);
$query = "SELECT * FROM catalog_spo_hrg where min = $val";
$ctg = mysql_query($query);
if(!$ctg) puterror("Ошибка".mysql_error());
$result = mysql_fetch_array($ctg);
echo $result['min'];
?>
|
Столбца val, да нет. Есть столбец min.
Правильно в коде указано?
А всё равно строки нет, указывает только минимальное это значение. Здесь echo $result['min']; | |
|
|
|
|
|
|
|
для: Vova
(31.01.2006 в 16:46)
| | А ошибку сейчас какую-нибудь выводит? | |
|
|
|
|
|
|
|
для: cheops
(31.01.2006 в 22:06)
| | Не, ошибку не выводит, выводит это минимальное значение, которое находится в столбце min. А хотелось бы всю строку или хотя бы значение из другого столбца (допустим с именем столбца - name) рядом с этим минимальным значением. | |
|
|
|
|
|
|
|
для: Vova
(01.02.2006 в 11:07)
| | Хм... так вы выводите значение другого столбца
<?php
$result = mysql_fetch_array($ctg);
echo $result['min']."<br>";
echo $result['val']."<br>";
echo $result['val_other']."<br>";
?>
|
Где val и val_other - имена других столбцов. | |
|
|
|