Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Минимум больше нуля / 25 сообщений из 30, страница 1 из 2
24.02.2014, 22:37:56
    #38570986
Include.nv
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Минимум больше нуля
Есть данный запрос:

Код: sql
1.
2.
3.
4.
5.
6.
SELECT if(min(r.i2) < min(g.i2), min(r.i2), min(g.i2)) i2
FROM records_db s
JOIN records_db g on g.base = 124 and g.g2 = s.id
JOIN records_db c on c.base = 125 and c.g1 = g.id
JOIN records_db r on r.base = 126 and r.g1 = c.id
WHERE s.base = 123 and s.id = АЙДИ



Как вернуть минимум который больше нуля?
Соответственно, если все элементы нули, то и минимум будет ноль.
...
Рейтинг: 0 / 0
24.02.2014, 23:06:46
    #38571003
Akina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Минимум больше нуля
А если оба меньше нуля?
...
Рейтинг: 0 / 0
24.02.2014, 23:44:39
    #38571015
Include.nv
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Минимум больше нуля
Akina, все i2 >= 0.
...
Рейтинг: 0 / 0
25.02.2014, 04:54:36
    #38571084
Минимум больше нуля
Include.nv,

почитать про LEAST / GREATEST ?
...
Рейтинг: 0 / 0
25.02.2014, 11:00:38
    #38571304
Cygapb-007
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Минимум больше нуля
так?
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
SELECT 
  if((@a:=ifnull(min(if(r.i2>0,r.i2,NULL)),0))
    <(@b:=ifnull(min(if(g.i2>0,g.i2,NULL)),0))
   ,@a, @b) i2
FROM records_db s
JOIN records_db g on g.base = 124 and g.g2 = s.id
JOIN records_db c on c.base = 125 and c.g1 = g.id
JOIN records_db r on r.base = 126 and r.g1 = c.id
WHERE s.base = 123 and s.id = АЙДИ
...
Рейтинг: 0 / 0
25.02.2014, 11:12:50
    #38571319
Akina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Минимум больше нуля
Слишком замудрёно... LEAST / GREATEST проще.
...
Рейтинг: 0 / 0
25.02.2014, 11:45:30
    #38571369
Cygapb-007
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Минимум больше нуля
AkinaСлишком замудрёно... LEAST / GREATEST проще.Гы... начальный вопрос был не о том...

Но - оки: так?
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
SELECT least(
  ifnull(min(if(r.i2>0,r.i2,NULL)),0)),
  ifnull(min(if(g.i2>0,g.i2,NULL)),0))
  )i2
FROM records_db s
JOIN records_db g on g.base = 124 and g.g2 = s.id
JOIN records_db c on c.base = 125 and c.g1 = g.id
JOIN records_db r on r.base = 126 and r.g1 = c.id
WHERE s.base = 123 and s.id = АЙДИ
...
Рейтинг: 0 / 0
25.02.2014, 14:42:42
    #38571648
Akina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Минимум больше нуля
Код: sql
1.
SELECT IF(LEAST(min(r.i2),min(g.i2))=0, GREATEST(min(r.i2),min(g.i2)), LEAST(min(r.i2),min(g.i2)))
...
Рейтинг: 0 / 0
25.02.2014, 15:49:18
    #38571788
Cygapb-007
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Минимум больше нуля
Include.nvКак вернуть минимум который больше нуля?
Соответственно, если все элементы нули, то и минимум будет ноль.Akina
Код: sql
1.
SELECT IF(LEAST(min(r.i2),min(g.i2))=0, GREATEST(min(r.i2),min(g.i2)), LEAST(min(r.i2),min(g.i2)))

от же ж...
Код: sql
1.
2.
3.
4.
5.
select min(a), min(b) -- = 0, 0 (вместо 1, 2, как требовалось)
from (
   select 0 a,0 b union all
   select 1 a,3 b union all
   select 3 a,2 b )v;
...
Рейтинг: 0 / 0
25.02.2014, 16:06:15
    #38571825
Include.nv
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Минимум больше нуля
Akina
Код: sql
1.
SELECT IF(LEAST(min(r.i2),min(g.i2))=0, GREATEST(min(r.i2),min(g.i2)), LEAST(min(r.i2),min(g.i2)))


А если r.i2 и g.i2 могут быть NULL?
...
Рейтинг: 0 / 0
25.02.2014, 16:13:03
    #38571839
Akina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Минимум больше нуля
Include.nvА если r.i2 и g.i2 могут быть NULL?Выше кто-то говорил, что Include.nvвсе i2 >= 0
Но если поля могут содержать NULL, то это ВАМ следует определиться, как их интерпретировать.
А с учётом того, что там фигурирует групповая MIN (которая игнорирует NULL-ы), я думаю, что этот вопрос отпал ещё до того, как был задан.
...
Рейтинг: 0 / 0
25.02.2014, 16:13:56
    #38571840
Cygapb-007
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Минимум больше нуля
еще 2 функции, которые хотелось бы иметь в MS SQL least/greatest... не знал про них, спасибо :)
...
Рейтинг: 0 / 0
25.02.2014, 16:23:53
    #38571863
Include.nv
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Минимум больше нуля
AkinaInclude.nvА если r.i2 и g.i2 могут быть NULL?Выше кто-то говорил, что Include.nvвсе i2 >= 0
Но если поля могут содержать NULL, то это ВАМ следует определиться, как их интерпретировать.
А с учётом того, что там фигурирует групповая MIN (которая игнорирует NULL-ы), я думаю, что этот вопрос отпал ещё до того, как был задан.

Спросил, потому что ваш запрос все же возвращает нули в некоторых случаях.
Хотя, если сделать выборку:
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
SELECT r.i2
FROM cs_records_db s
JOIN cs_records_db g ON g.base =124
AND g.g2 = s.id
JOIN cs_records_db c ON c.base =125
AND c.g1 = g.id
JOIN cs_records_db r ON r.base =126
AND r.g1 = c.id
WHERE s.base =123
AND s.id =АЙДИ



То там имеются значения больше нуля, при этом встречаются NULL.

Но ваш запрос вернул ноль.
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
SELECT IF(LEAST(min(r.i2),min(g.i2))=0, GREATEST(min(r.i2),min(g.i2)), LEAST(min(r.i2),min(g.i2)))
FROM cs_records_db s
JOIN cs_records_db g ON g.base =124
AND g.g2 = s.id
JOIN cs_records_db c ON c.base =125
AND c.g1 = g.id
JOIN cs_records_db r ON r.base =126
AND r.g1 = c.id
WHERE s.base =123
AND s.id =АЙДИ
...
Рейтинг: 0 / 0
25.02.2014, 16:29:14
    #38571876
Akina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Минимум больше нуля
Показывайте данные - набор пар полей в первом запросе (кстати, там почему-то одно поле, а не два) и результат второго запроса на тех же данных.
Заодно дополните второй запрос выводом MIN по каждому из полей и LEAST/GREATEST по их паре.
...
Рейтинг: 0 / 0
25.02.2014, 16:32:22
    #38571885
Akina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Минимум больше нуля
Заодно укажите точную версию MySQL - это важно. LEAST / GREATEST до 5,0,13 и после ведут себя по-разному.
...
Рейтинг: 0 / 0
25.02.2014, 16:36:44
    #38571897
Cygapb-007
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Минимум больше нуля
Include.nvAkinaпропущено...ваш запрос все же возвращает нули в некоторых случаях.Потому что min(x) всегда покажет 0, если в данных есть 0. LEAST/GREATEST не может получить другое значение, если в его параметрах только нули.
...
Рейтинг: 0 / 0
25.02.2014, 16:45:57
    #38571923
Include.nv
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Минимум больше нуля
Если я правильно понял по данным из выборки, то это из-за того, что у меня все g.i2 = 0.

Версия: MySQL 5.1.66-0

Данные в файле cs_records_db_gi2_ri2.csv.
Прилагаю скриншот выполнения запроса:
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
SELECT IF(LEAST(min(r.i2),min(g.i2))=0, GREATEST(min(r.i2),min(g.i2)), LEAST(min(r.i2),min(g.i2))), MIN(g.i2), MIN(r.i2), GREATEST(min(r.i2),min(g.i2)), LEAST(min(r.i2),min(g.i2))
FROM cs_records_db s
JOIN cs_records_db g ON g.base =124
AND g.g2 = s.id
JOIN cs_records_db c ON c.base =125
AND c.g1 = g.id
JOIN cs_records_db r ON r.base =126
AND r.g1 = c.id
WHERE s.base =123
AND s.id =36727



...
Рейтинг: 0 / 0
25.02.2014, 16:57:05
    #38571951
Include.nv
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Минимум больше нуля
Cygapb-007Include.nvпропущено...
ваш запрос все же возвращает нули в некоторых случаях.Потому что min(x) всегда покажет 0, если в данных есть 0. LEAST/GREATEST не может получить другое значение, если в его параметрах только нули.
Собственно да, так и происходит.
...
Рейтинг: 0 / 0
25.02.2014, 17:12:29
    #38571979
Akina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Минимум больше нуля
Ну собственно ТЗ соблюдено:
Include.nvесли все элементы нули, то и минимум будет ноль.
...
Рейтинг: 0 / 0
25.02.2014, 17:32:37
    #38572027
Include.nv
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Минимум больше нуля
AkinaНу собственно ТЗ соблюдено:
Include.nvесли все элементы нули, то и минимум будет ноль.
Но нужен минимум больше нуля. Можно это как-нибудь сделать?
...
Рейтинг: 0 / 0
25.02.2014, 17:46:59
    #38572052
Cygapb-007
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Минимум больше нуля
Include.nvAkinaНу собственно ТЗ соблюдено:
пропущено...

Но нужен минимум больше нуля. Можно это как-нибудь сделать?Не читатель...

Повторю... 15624549
...
Рейтинг: 0 / 0
25.02.2014, 17:48:49
    #38572056
Cygapb-007
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Минимум больше нуля
со скобками только напутал вроде, лишнюю поставил...
...
Рейтинг: 0 / 0
25.02.2014, 17:53:58
    #38572067
Include.nv
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Минимум больше нуля
Cygapb-007со скобками только напутал вроде, лишнюю поставил...
Для набора данных, который я выкладывал выше, все равно возвращает ноль. :(
...
Рейтинг: 0 / 0
25.02.2014, 18:00:19
    #38572076
Akina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Минимум больше нуля
Include.nvНо нужен минимум больше нуля. Можно это как-нибудь сделать?
Тваюмать! ну как можно выбрать "минимум больше нуля" из кучи нулей?
...
Рейтинг: 0 / 0
25.02.2014, 18:04:06
    #38572082
Include.nv
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Минимум больше нуля
AkinaInclude.nvНо нужен минимум больше нуля. Можно это как-нибудь сделать?
Тваюмать! ну как можно выбрать "минимум больше нуля" из кучи нулей?
Тваюмать! Вы смотрели данные?
Все g.i2 = 0, но имеются r.i2, которые больше нуля.
Требуется выбрать минимум между g.i2 и r.i2 такой, чтобы он был БОЛЬШЕ НУЛЯ.
Естественно, если все g.i2 = 0 и r.i2 = 0, то минимум будет ноль.
...
Рейтинг: 0 / 0
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Минимум больше нуля / 25 сообщений из 30, страница 1 из 2
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]