Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Помогите с логикой запроса. / 25 сообщений из 39, страница 1 из 2
03.12.2013, 11:05:46
    #38487041
hedgehogelez
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите с логикой запроса.
Приветствую форумчане. Есть такая таблица:

calc_month номер месяца по порядку rank он и есть ранг :-)
Так вот никак до меня не дойдет, как выбрать все поля где rank > 6 встречается восемь месяцев подряд, типа
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
...  EXISTS (SELECT 1 FROM `mem_net` WHERE `mem_net`.`calc_month` = 53 AND `mem_net`.`rank` > 6 ) AND
  EXISTS (SELECT 1 FROM `mem_net` WHERE `mem_net`.`calc_month` = 52 AND `mem_net`.`rank` > 6 ) AND
  EXISTS (SELECT 1 FROM `mem_net` WHERE `mem_net`.`calc_month` = 51 AND `mem_net`.`rank` > 6 ) AND
  EXISTS (SELECT 1 FROM `mem_net` WHERE `mem_net`.`calc_month` = 50 AND `mem_net`.`rank` > 6 ) AND
  EXISTS (SELECT 1 FROM `mem_net` WHERE `mem_net`.`calc_month` = 49 AND `mem_net`.`rank` > 6 ) AND
  EXISTS (SELECT 1 FROM `mem_net` WHERE `mem_net`.`calc_month` = 48 AND `mem_net`.`rank` > 6 ) AND
  EXISTS (SELECT 1 FROM `mem_net` WHERE `mem_net`.`calc_month` = 47 AND `mem_net`.`rank` > 6 ) AND
  EXISTS (SELECT 1 FROM `mem_net` WHERE `mem_net`.`calc_month` = 46 AND `mem_net`.`rank` > 6 )


Но вот как проверить это за весь год (т.е с 53 до 45)? OR использовать нельзя в момент ахинею выдавать начнет.
Наведите на мысль плиз....
...
Рейтинг: 0 / 0
03.12.2013, 11:22:21
    #38487064
Помогите с логикой запроса.
можно ведь проверить, что за заданный промежуток времени НЕ встречается рангов <= 6 ;)
...
Рейтинг: 0 / 0
03.12.2013, 11:24:46
    #38487068
Помогите с логикой запроса.
ну либо считать кол-во месяцев и проверять, что их ровно 8.
...
Рейтинг: 0 / 0
03.12.2013, 11:43:40
    #38487097
MasterZiv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите с логикой запроса.
Ещё такое великолепно делается курсором.
...
Рейтинг: 0 / 0
03.12.2013, 11:45:49
    #38487104
hedgehogelez
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите с логикой запроса.
MasterZiv,

Чё за курсор?
...
Рейтинг: 0 / 0
03.12.2013, 11:48:26
    #38487110
Cygapb-007
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите с логикой запроса.
...
Рейтинг: 0 / 0
03.12.2013, 11:52:30
    #38487120
Cygapb-007
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите с логикой запроса.
Торможу с утра, не сообразил проДобрый Э - Эхможно ведь проверить, что за заданный промежуток времени НЕ встречается рангов <= 6 ;)
...
Рейтинг: 0 / 0
03.12.2013, 12:22:48
    #38487180
hedgehogelez
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите с логикой запроса.
Cygapb-007,
Переменные рулят! :-)
Почемуто выдает:
Код: plsql
1.
2.
3.
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 'select distinct c.*
from mem_net m
join mem_net c on c.rank>6 and c.calc_month' [color=red]at line 3[/color]
...
Рейтинг: 0 / 0
03.12.2013, 12:36:33
    #38487205
Akina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите с логикой запроса.
Или перед select есть неотображаемый "левый" символ, или показывай ВЕСЬ запрос и рассказывай (или показывай код), как ты его выполняешь.
...
Рейтинг: 0 / 0
03.12.2013, 12:38:23
    #38487208
hedgehogelez
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите с логикой запроса.
Akina,
Код: plsql
1.
2.
3.
4.
5.
6.
7.
8.
9.
set @q=45;
select distinct c.*
from mem_net m
join mem_net c on c.rank>6 and c.calc_month between m.calc_month and m.calc_month+@q-1
where m.rank>6 and @q<=(
  select count(*) 
  from mem_net c
  where c.rank>6 and c.calc_month between m.calc_month and m.calc_month+@q-1
  )
...
Рейтинг: 0 / 0
03.12.2013, 12:42:57
    #38487217
Akina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите с логикой запроса.
Akina и рассказывай (или показывай код), как ты его выполняешь.
...
Рейтинг: 0 / 0
03.12.2013, 12:49:18
    #38487233
hedgehogelez
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите с логикой запроса.
Akina,

Так вроде ж код выложил, только там set @q=3;
...
Рейтинг: 0 / 0
03.12.2013, 12:52:18
    #38487239
Akina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите с логикой запроса.
КАК ТЫ ЭТОТ КОД ИСПОЛНЯЕШЬ НА СЕРВЕРЕ???
...
Рейтинг: 0 / 0
03.12.2013, 12:52:34
    #38487240
Cygapb-007
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите с логикой запроса.
ХЗ... Может, сработает более оптимальный(/правильный) вариант?:)
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
;
select distinct c.*
from mem_net m
join mem_net c on c.calc_month between m.calc_month and m.calc_month+@q-1
cross join (select @q:=4 q)q
where not exists(
  select 1
  from mem_net e
  where e.calc_month between m.calc_month and m.calc_month+@q-1 and e.rank <=6
  );
...
Рейтинг: 0 / 0
03.12.2013, 12:54:29
    #38487243
Cygapb-007
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите с логикой запроса.
Ой, он неправильный))) Сорь...
...
Рейтинг: 0 / 0
03.12.2013, 12:54:54
    #38487245
Akina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите с логикой запроса.
Cygapb-007 , да ща окажется, что он через mysql_query его пытается серверу скормить, или какая анальногичная хрень...
...
Рейтинг: 0 / 0
03.12.2013, 13:00:34
    #38487254
hedgehogelez
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите с логикой запроса.
Akina,

SQL Manager 2011 Перезапустил начал выполнять. Такая косячная хрень... Второй месяц юзаю обплевался.
...
Рейтинг: 0 / 0
03.12.2013, 13:03:27
    #38487262
tanglir
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите с логикой запроса.
hedgehogelez,

зачем второй месяц юзать косячную хрень? ничего лучше не нашлось?
...
Рейтинг: 0 / 0
03.12.2013, 13:43:53
    #38487310
MasterZiv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите с логикой запроса.
hedgehogelezMasterZiv,

Чё за курсор?

http://dev.mysql.com/doc/refman/5.1/en/cursors.html
...
Рейтинг: 0 / 0
03.12.2013, 13:44:53
    #38487315
hedgehogelez
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите с логикой запроса.
tanglir,

Мда... хрень точно косячная... Аналогично результат не ICE...
...
Рейтинг: 0 / 0
03.12.2013, 13:45:31
    #38487316
MasterZiv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите с логикой запроса.
hedgehogelezCygapb-007,
Переменные рулят! :-)



С переменными я бы как раз не связывался.
Потому что не понятно, как они работают -- порядок вычисления предложений в запросе не определён...
...
Рейтинг: 0 / 0
03.12.2013, 14:03:25
    #38487365
Cygapb-007
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите с логикой запроса.
MasterZivhedgehogelezCygapb-007,
Переменные рулят! :-)



С переменными я бы как раз не связывался.
Потому что не понятно, как они работают -- порядок вычисления предложений в запросе не определён...Не в данном случае:)

А вообще да, в 5.5 и в 5.6 они по-разному обрабатываются :)
...
Рейтинг: 0 / 0
03.12.2013, 14:31:53
    #38487432
hedgehogelez
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите с логикой запроса.
Мда.... печально как-то это всё...
...
Рейтинг: 0 / 0
03.12.2013, 14:57:32
    #38487460
MasterZiv
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите с логикой запроса.
Cygapb-007Не в данном случае:)
А вообще да, в 5.5 и в 5.6 они по-разному обрабатываются :)

не дашь ли ты ссылку на документацию, где описывается, как работают переменные в запросах?
...
Рейтинг: 0 / 0
03.12.2013, 15:01:53
    #38487474
Cygapb-007
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Помогите с логикой запроса.
MasterZivCygapb-007Не в данном случае:)
А вообще да, в 5.5 и в 5.6 они по-разному обрабатываются :)

не дашь ли ты ссылку на документацию, где описывается, как работают переменные в запросах?Ссылку не дам, но лично сталкивался с запросом на переменных, правильно работающем в 5.5 и выдающем бред в 5.6. Связано было вроде с оптимизацией подзапросов в 5.6.

Деталей уже не помню, но итог в памяти осел... в смысле отложился
...
Рейтинг: 0 / 0
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Помогите с логикой запроса. / 25 сообщений из 39, страница 1 из 2
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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