powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / MySQL [игнор отключен] [закрыт для гостей] / как заменить подSELECT в случае с CASE WHEN ?
9 сообщений из 9, страница 1 из 1
как заменить подSELECT в случае с CASE WHEN ?
    #39383526
tip78
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вот такой расклад
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
9.
SELECT `uid`,
COUNT(CASE WHEN DATE(`start`) >= CURDATE() AND `end`>0 THEN 1 END) AS `total_day`,
COUNT(CASE WHEN DATE(`start`) >= DATE_SUB(CURDATE(),INTERVAL 7 DAY) AND `end`>0 THEN 1 END) AS `total_week`,
COUNT(CASE WHEN `end`>0 THEN 1 END) AS `total_month`,
CASE WHEN `end`=0 THEN DATE_FORMAT(`start`,'%H:%i') END AS `active_meeting`
--      (SELECT DATE_FORMAT(`start`,'%H:%i') FROM `meetings` WHERE `uid`=t1.`uid` AND `start`>0 AND `end`=0) AS `active_meeting`
FROM `meetings` AS `t1`
WHERE `start` >= DATE_SUB(CURDATE(),INTERVAL 30 DAY)
GROUP BY `uid` ORDER BY `total_month` DESC;



возможно ли закомментированный subSELECT заменить на что-то другое?
дело в том, что когда GROUP BY `uid` работает, то `active_meeting` теряется и выводится NULL
надо чтобы он наверх вылазил
...
Рейтинг: 0 / 0
как заменить подSELECT в случае с CASE WHEN ?
    #39383528
tip78
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
`active_meeting` это, соответственно, плавающая дата, когда встреча начата, но не закончена, т.е. в процессе
её надо показывать
...
Рейтинг: 0 / 0
как заменить подSELECT в случае с CASE WHEN ?
    #39383540
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
tip78,

Что за поле uid ?
Оно уникально или нет?
Если оно уникально, то нет смысла в группировке.
Если оно не уникально, то подзапрос может вернуть несколько записей, что приведет к ошибке.
...
Рейтинг: 0 / 0
как заменить подSELECT в случае с CASE WHEN ?
    #39383548
tip78
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
miksoft, `uid` НЕ уникален, это НФ, куда скидываются встречи
уникальность реализована через `end`
у одного `uid` может быть только 1 `end`=0 (т.е. встреча не закончена)
...
Рейтинг: 0 / 0
как заменить подSELECT в случае с CASE WHEN ?
    #39383567
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
tip78,

Тогда, по идее, подзапрос должен работать.
На всякий случай, в нем тоже дайте для таблицы алиас и явно укажите его для всех используемых полей, чтобы было однозначно ясно какой именно `uid` и др. поля используются.
...
Рейтинг: 0 / 0
как заменить подSELECT в случае с CASE WHEN ?
    #39383571
tip78
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
miksofttip78,

Тогда, по идее, подзапрос должен работать.
На всякий случай, в нем тоже дайте для таблицы алиас и явно укажите его для всех используемых полей, чтобы было однозначно ясно какой именно `uid` и др. поля используются.
так подзапрос и работает
и накладок там нет
но я хочу его заменить на что-то менее ресурсоёмкое
CASE WHEN в этом случае работает, но наполовину
...
Рейтинг: 0 / 0
как заменить подSELECT в случае с CASE WHEN ?
    #39383574
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
tip78но я хочу его заменить на что-то менее ресурсоёмкоеПри наличии индекса (`uid`,`end`) должен работать вполне неплохо.
...
Рейтинг: 0 / 0
как заменить подSELECT в случае с CASE WHEN ?
    #39383575
miksoft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
можно попробовать так:
Код: sql
1.
MAX(CASE `end`=0 THEN `start` END) 
...
Рейтинг: 0 / 0
как заменить подSELECT в случае с CASE WHEN ?
    #39383581
tip78
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
miksoftможно попробовать так:
Код: sql
1.
MAX(CASE `end`=0 THEN `start` END) 


тьфу блин, а я вставлял MAX(`start`) пффф
спасибо )
...
Рейтинг: 0 / 0
9 сообщений из 9, страница 1 из 1
Форумы / MySQL [игнор отключен] [закрыт для гостей] / как заменить подSELECT в случае с CASE WHEN ?
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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