Модераторы: skyboy

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> выбрать минимальное значение из базы 
:(
    Опции темы
supervladislav
Дата 22.5.2010, 20:56 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


///\\\///\\\///\\\
***


Профиль
Группа: Завсегдатай
Сообщений: 1771
Регистрация: 18.5.2006

Репутация: нет
Всего: -9



скажите имеется вот такой sql запрос

Код

SELECT min(`cena`) from predlogenia WHERE nomerpols='$id'

база выглядит вот так 
Код

CREATE TABLE IF NOT EXISTS `predlogenia` (
  `id` bigint(40) NOT NULL AUTO_INCREMENT,
  `kogda` varchar(15) NOT NULL,
  `nomerpols` varchar(40) NOT NULL,
  `login` varchar(40) NOT NULL,
  `cena` double NOT NULL,
  `timestamp` varchar(40) NOT NULL,
  PRIMARY KEY (`id`),
  UNIQUE KEY `id` (`id`)
) ENGINE=MyISAM  DEFAULT CHARSET=cp1251 AUTO_INCREMENT=35 ;

--
-- Dumping data for table `predlogenia`
--

INSERT INTO `predlogenia` (`id`, `kogda`, `nomerpols`, `login`, `cena`, `timestamp`) VALUES
(34, '05-22-10', '1', 'vlad', 1, '1274548806');


скажите почему минимальное значение не выводится ))
скажите я рылся в книге по mysql там ничего не написано какого типа поле должна потдерживать функция min





PM MAIL   Вверх
Gluttton
Дата 22.5.2010, 21:17 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Начинающий
***


Профиль
Группа: Завсегдатай
Сообщений: 1170
Регистрация: 28.8.2008
Где: Феодосия

Репутация: 24
Всего: 54



А если убрать предложение WHERE запрос будет возвращать значения?


--------------------
Слава Україні!
PM MAIL   Вверх
supervladislav
Дата 22.5.2010, 21:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


///\\\///\\\///\\\
***


Профиль
Группа: Завсегдатай
Сообщений: 1771
Регистрация: 18.5.2006

Репутация: нет
Всего: -9



Вот так ничего не возвращает ))
Скажите а  с duble  min работает???

Код

SELECT min(cena) from predlogenia 

PM MAIL   Вверх
Gluttton
Дата 22.5.2010, 21:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Начинающий
***


Профиль
Группа: Завсегдатай
Сообщений: 1170
Регистрация: 28.8.2008
Где: Феодосия

Репутация: 24
Всего: 54



Цитата(supervladislav @  22.5.2010,  21:35 Найти цитируемый пост)
Скажите а  с duble  min работает???

Ну а почему бы и нет... Хотя я с MySQL сталкивался мало...

А так:
Код

SELECT * from predlogenia

что вернёт?


--------------------
Слава Україні!
PM MAIL   Вверх
supervladislav
Дата 22.5.2010, 22:47 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


///\\\///\\\///\\\
***


Профиль
Группа: Завсегдатай
Сообщений: 1771
Регистрация: 18.5.2006

Репутация: нет
Всего: -9



возвращает всё что есть в базе 
PM MAIL   Вверх
Gluttton
Дата 22.5.2010, 23:00 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Начинающий
***


Профиль
Группа: Завсегдатай
Сообщений: 1170
Регистрация: 28.8.2008
Где: Феодосия

Репутация: 24
Всего: 54



Хм... Даже и не знаю, что предложить...
Ну а если вот так:
Код

SELECT min(cast cena as bigint) from predlogenia 



--------------------
Слава Україні!
PM MAIL   Вверх
supervladislav
Дата 23.5.2010, 00:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


///\\\///\\\///\\\
***


Профиль
Группа: Завсегдатай
Сообщений: 1771
Регистрация: 18.5.2006

Репутация: нет
Всего: -9



Код

SELECT min(cast cena as bigint) from predlogenia  where id=1


Это сообщение отредактировал(а) supervladislav - 23.5.2010, 00:39
PM MAIL   Вверх
Gluttton
Дата 23.5.2010, 00:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Начинающий
***


Профиль
Группа: Завсегдатай
Сообщений: 1170
Регистрация: 28.8.2008
Где: Феодосия

Репутация: 24
Всего: 54



Цитата(supervladislav @  23.5.2010,  00:39 Найти цитируемый пост)

Код

SELECT min(cast cena as bigint) from predlogenia  where id=1



При том, что id - первичный ключ, то в данном конкретном случае любая агрегатная функция примененная к возвращаемому значению будет равна самому значению...
Т.е. приведенный выше запрос избыточен и может быть заменен на следующий:
Код

SELECT cast cena as bigint from predlogenia  where id=1


Так все таки, какие данные возвращает запрос?


--------------------
Слава Україні!
PM MAIL   Вверх
supervladislav
Дата 23.5.2010, 01:02 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


///\\\///\\\///\\\
***


Профиль
Группа: Завсегдатай
Сообщений: 1771
Регистрация: 18.5.2006

Репутация: нет
Всего: -9



Ой прости не так 
Код

SELECT min(cast cena as bigint) from predlogenia  WHERE nomerpols='$tender'

вот блин что-же он через мин не работает

Добавлено через 2 минуты и 5 секунд
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 'cena as bigint) from predlogenia WHERE nomerpols='1'' at line 1
PM MAIL   Вверх
Gluttton
Дата 23.5.2010, 01:09 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Начинающий
***


Профиль
Группа: Завсегдатай
Сообщений: 1170
Регистрация: 28.8.2008
Где: Феодосия

Репутация: 24
Всего: 54



Ву-у-у-упссс... Скобочки то забыли smile ...
Попробуй так:
Код

SELECT min(cast(cena as bigint)) from predlogenia  WHERE nomerpols='$tender'



--------------------
Слава Україні!
PM MAIL   Вверх
supervladislav
Дата 23.5.2010, 01:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


///\\\///\\\///\\\
***


Профиль
Группа: Завсегдатай
Сообщений: 1771
Регистрация: 18.5.2006

Репутация: нет
Всего: -9



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 'bigint)) from predlogenia WHERE nomerpols='1'' at line 1

Добавлено @ 01:32
Код

SELECT min(cast(cena as bigint)) from predlogenia  WHERE nomerpols='$tender'

В чём же дело????

Это сообщение отредактировал(а) supervladislav - 23.5.2010, 01:38
PM MAIL   Вверх
Gluttton
Дата 23.5.2010, 01:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Начинающий
***


Профиль
Группа: Завсегдатай
Сообщений: 1170
Регистрация: 28.8.2008
Где: Феодосия

Репутация: 24
Всего: 54



Цитата(supervladislav @  23.5.2010,  01:28 Найти цитируемый пост)
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 'bigint)) from predlogenia WHERE nomerpols='1'' at line 1

И? Ошибка то синтаксическа smile ... Может ему (серверу) нужно тип (bigint) в верхнем регистре написать?

P.S. Я пытаюсь привести тип данных столбца cena к целому типу...



--------------------
Слава Україні!
PM MAIL   Вверх
supervladislav
Дата 23.5.2010, 02:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


///\\\///\\\///\\\
***


Профиль
Группа: Завсегдатай
Сообщений: 1771
Регистрация: 18.5.2006

Репутация: нет
Всего: -9



double у меня там 
что же делать 
PM MAIL   Вверх
Gluttton
Дата 23.5.2010, 02:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Начинающий
***


Профиль
Группа: Завсегдатай
Сообщений: 1170
Регистрация: 28.8.2008
Где: Феодосия

Репутация: 24
Всего: 54



Цитата(supervladislav @  23.5.2010,  02:07 Найти цитируемый пост)
double у меня там 
что же делать

Преобразовать к целому (я не думал, что это заберет столько сил smile ), как это делается я ссылку дал...
Но! По идее это не должно быть проблемой, т.к. min не только для double, а и для строк должен работать...
А поэтому резюмирую - все то, что я предлогал (в т.ч. cast) забыть smile ...
Завтра (или позднее) подтянется более грамотный народ, я думаю они уж точно подскажут в чем дело...

Вообще идея в следующем: когда не работает сложный запрос, его нужно поэтапно упрощать (т.е. удалять по одному условию отбора или функции) до тех пор, пока запрос не начнет возвращать те записи, которые от него ожидаются, а затем опять добавлять условия и функции, но уже более внимательно, при этом анализируя, в каком месте и главное почему запрос возвращает не те данные которые от него ожидаются...

В данном случае получается следующее: упростив запрос, до вида, возвращающего все данные из таблицы удалив при этом все условия и функции
Код

SELECT * from predlogen

 - запрос возвращает те данные, которые мы от него ожидаем, 
Цитата(supervladislav @  22.5.2010,  22:47 Найти цитируемый пост)
возвращает всё что есть в базе  

но добавляя одну агрегатную функцию
Код

SELECT min(cena) from predlogenia 

 он перестает возвращать значения.
Цитата(supervladislav @  22.5.2010,  21:35 Найти цитируемый пост)
Вот так ничего не возвращает ))


Причину я так и не понял...





--------------------
Слава Україні!
PM MAIL   Вверх
Zloxa
Дата 23.5.2010, 10:45 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Чо?
****


Профиль
Группа: Завсегдатай
Сообщений: 3473
Регистрация: 12.9.2008

Репутация: 53
Всего: 161



Цитата(Gluttton @  23.5.2010,  02:52 Найти цитируемый пост)
код SQL
1:
SELECT min(cena) from predlogenia 

 он перестает возвращать значения.

действительно странно.. этот запрос ВСЕГДА должен возвращать значения, даже елси обращается к пустому набору данных, должен вернуть не определенное значение.
Однако ж полагаю, ошибка гдето на стороне ПХП. Если эти запросы сделать используя командный шелл маськи, думаю, все будет ндормально.




--------------------
Достоверно известно, что 89% людей доверяют статистике взятой с потолка smile
PM   Вверх
Ответ в темуСоздание новой темы Создание опроса
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Составление SQL-запросов | Следующая тема »


 




[ Время генерации скрипта: 0.1015 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.