Автор Тема: MAX/MIN v WHERE  (Прочитано 3887 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн Stas

  • Фанат форума
  • Старожил
  • ****
  • Сообщений: 304
  • +0/-0
  • 0
    • Просмотр профиля
    • http://www.isfuture.com
MAX/MIN v WHERE
« : 05 Сентября 2003, 22:03:47 »
Знатокам SQL..

Хотелось бы чтобы подобный запрос был возможным, однако MySQL такого не разрешает. Знает-ли кто-нибудь как ето можно сделать ?

SELECT IFNULL(MAX(sn),0) AS maxvalue, IFNULL(MIN(sn),0) AS minvalue, IFNULL(((MAX(sn) - MIN(sn))+1),0) AS difference, COUNT(sn) AS qty  FROM callingcards WHERE value=\'3.00\' AND (sn BETWEEN minvalue AND maxvalue);

Знаю что можно с вложенными запросами. А есть ешё способ ?
« Последнее редактирование: 05 Сентября 2003, 22:22:11 от Stas »

Оффлайн fidget

  • Непоседа
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 607
  • +0/-0
  • 2
    • Просмотр профиля
    • http://
MAX/MIN v WHERE
« Ответ #1 : 05 Сентября 2003, 23:28:21 »
SELECT ... WHERE value=\'3.00\' HAVING sn BETWEEN minvalue AND maxvalue.
На Машине Тьюринга далеко не уедешь.

Оффлайн Stas

  • Фанат форума
  • Старожил
  • ****
  • Сообщений: 304
  • +0/-0
  • 0
    • Просмотр профиля
    • http://www.isfuture.com
MAX/MIN v WHERE
« Ответ #2 : 05 Сентября 2003, 23:36:52 »
ERROR 1054: Unknown column \'sn\' in \'having clause\'

??

Оффлайн Stas

  • Фанат форума
  • Старожил
  • ****
  • Сообщений: 304
  • +0/-0
  • 0
    • Просмотр профиля
    • http://www.isfuture.com
MAX/MIN v WHERE
« Ответ #3 : 07 Сентября 2003, 16:46:57 »
fidget
sn в HAVING блоке не признается...

Оффлайн fidget

  • Непоседа
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 607
  • +0/-0
  • 2
    • Просмотр профиля
    • http://
MAX/MIN v WHERE
« Ответ #4 : 07 Сентября 2003, 21:07:48 »
хм .... да, без GROUP BY не хочет .. :(
Кстати, а зачем выбирать значения между минимальным и максимальным значением? они ведь и так так находятся .. или я что-то пропустила?
На Машине Тьюринга далеко не уедешь.

Оффлайн Stas

  • Фанат форума
  • Старожил
  • ****
  • Сообщений: 304
  • +0/-0
  • 0
    • Просмотр профиля
    • http://www.isfuture.com
MAX/MIN v WHERE
« Ответ #5 : 07 Сентября 2003, 21:41:51 »
вобшем ето для базы данных телефонных карт. В таком запросе сразу видно есть-ли ошибка.. Т.к. difference ВСЕГДА должна быть равна qty..

Оффлайн fidget

  • Непоседа
  • Глобальный модератор
  • Ветеран
  • *****
  • Сообщений: 607
  • +0/-0
  • 2
    • Просмотр профиля
    • http://
MAX/MIN v WHERE
« Ответ #6 : 08 Сентября 2003, 12:07:00 »
нет, я не то имела ввиду.
вот у тебя есть столбец sn и ты ставишь ословие выбрать данные, которые находятся между минимальным и  максимальным значением этот самого sn. Вопрос - зачем такое условие? ведь данные и так находятся между минимальным и максимальным значением?
На Машине Тьюринга далеко не уедешь.

Оффлайн Stas

  • Фанат форума
  • Старожил
  • ****
  • Сообщений: 304
  • +0/-0
  • 0
    • Просмотр профиля
    • http://www.isfuture.com
MAX/MIN v WHERE
« Ответ #7 : 08 Сентября 2003, 12:37:26 »
fidget
но MIN и MAX значения без условия WHERE (used=1) например ...
Тоесть MIN и MAX значения серииных номеров всех карточек. Тоесть чтобы проверить что диапозон серийных номеров непрерывный.

Тоесть минимальное и махимальное значение всегда будет такое же.. Но если в WHERE иа напишу used=1. То если не все карточки новые, тогда выборка выдасть меньше чем (MAX-MIN)+1
« Последнее редактирование: 08 Сентября 2003, 19:26:20 от Stas »

 

Sitemap 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28