Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Составление SQL-запросов > маскимальное значение поля отобранных строк


Автор: DeamonShan 4.6.2008, 10:52
Код

select max(num) from table where id=30


делаю такой запрос, незнаю, не пашет...

задача: выбрать максимальное значение поля нескольких отобранных строк по id... help

Автор: Akina 4.6.2008, 11:09
а группировка где?

Автор: DeamonShan 4.6.2008, 11:14
то есть группировка??? я в sql не шарью)))

Автор: Deniz 4.6.2008, 11:17
Цитата(DeamonShan @  4.6.2008,  13:52 Найти цитируемый пост)
делаю такой запрос, незнаю, не пашет...
а что говорит?

Цитата(Akina @  4.6.2008,  14:09 Найти цитируемый пост)
а группировка где? 
а накой там группировка?

Автор: DeamonShan 4.6.2008, 11:19
Ничего не говорит, пустой результат...

я средствами пхп обращаюсь к БД можт вкоде дело?

Код

$res=$db->sql_query($sql);
$str=$db->sql_fetchrow($res);


$str[0] || $str['num']??

Автор: ТоляМБА 4.6.2008, 11:41
Начнём с того, что:
Код
select num from table where id=30
 что-то выдаёт?

Цитата(DeamonShan @  4.6.2008,  12:52 Найти цитируемый пост)
не пашет
 smile Не пора ли научиться правильно задавать вопрос?

Автор: DeamonShan 4.6.2008, 11:46
ТоляМБА, смари выше)))

Автор: ТоляМБА 4.6.2008, 11:47
Кстати, а NUM случайно не зарезервированное имя (MS-SQL под рукой нет)

Автор: DeamonShan 4.6.2008, 11:49
Цитата(ТоляМБА @ 4.6.2008,  11:47)
Кстати, а NUM случайно не зарезервированное имя (MS-SQL под рукой нет)

Да нет, так то работает... если вместо max(num) поставить звездачку, работает как часики...

Автор: ТоляМБА 4.6.2008, 12:10
при
Код
select num from table

и
Код
select num from table where id=30

результат одинаковый? Что то выдаёт?

Добавлено через 43 секунды
Цитата(DeamonShan @  4.6.2008,  13:49 Найти цитируемый пост)
поставить звездачку
Мы имя поля проверяем, а не звёздочку  smile 

Автор: DeamonShan 4.6.2008, 12:41
Код

select num from table


Код

select num from table where id=30


оба случая дали разные результаты...

это кстать и прально, так и должно быть....


но с функцией max ни первый ни второй не выдает результов...

Автор: Deniz 4.6.2008, 12:42
Т.е.
Код
select num from table where id=30
что-то выдал? А где проверял?
Таки скажи какая СУБД?

Автор: ТоляМБА 4.6.2008, 12:43
Ну тогда остаётся попробовать:

Код
select Sum(num) as Sum_Num from table where id=30



Автор: Akina 4.6.2008, 12:56
что дает
Код
select max(`num`) from `table` where `id`=30
?

Автор: DeamonShan 4.6.2008, 13:41
БД - MySQL

Код

select Sum(num) as Sum_Num from table where id=30


пустой результат...

Код

select max(`num`) from `table` where `id`=30


тоже пустой...


ребята, я выше говорил, никто не заметил наверное... я средствами пхп обращаюсь, вот:

Код

$res=$db->sql_query("select * from `ac_postavshik`");
while($str=$db->sql_fetchrow($res)){
 $resTmp=$db->sql_query("select max(`num`) from `ac_schet`  where `id_postavshik`='".$str['id']."'");
 $strTmp=$db->sql_fetchrow($resTmp);
 $postsArJS.="post[".$str['id']."]=".$strTmp['num'].";\n";
}



можт тут не прально?

Автор: Akina 4.6.2008, 16:51
id_postavshik - какого типа? неужели строковый?  smile 

Автор: DeamonShan 4.6.2008, 18:53
id_postavshik - integer


кстати о типах полей... поле num - оказывается строковое((((

поэтому пришлось действовать по другому...уточнил условие, оказывает каждая новая запись имеет значение NUM больше предыдушей, поэтому достаточно выбрать последнюю запись...

Автор: Akina 4.6.2008, 22:23
Цитата(DeamonShan @  4.6.2008,  19:53 Найти цитируемый пост)
id_postavshik - integer

Однако 
Цитата(DeamonShan @  4.6.2008,  14:41 Найти цитируемый пост)
where `id_postavshik`='".$str['id']."'");

заставляет в этом усомниться.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)