powered by simpleCommunicator - 2.0.56     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Запрос COUNT(IF)JOIN WHERE GROUP BY
15 сообщений из 15, страница 1 из 1
Запрос COUNT(IF)JOIN WHERE GROUP BY
    #40036997
1212121212333
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Запрос не работает на сервере. В MySQL Workbench работает. Помогите разобраться.
Код: plsql
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.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
45.
46.
47.
48.
49.
SELECT 
    o.orgname AS 'организация',
    p.tel AS 'номер',
    p.tipe AS 'тип',
    p.ttype AS 'описание',
    COUNT(IF((p.tipe = 'А'
            AND (NOT (d.code != '16' AND d.code != '17'
            AND d.code != '18'
            AND d.code != '19'
            AND d.longz = '00:00:00')
            AND (d.longz >= '00:00:00')))
            OR ((p.tipe = 'BATC' OR p.tipe = 'ВАТС')
            AND (d.longz >= '00:00:10'
            OR ((d.code2 = 'пропущенный')
            OR (d.code2 = 'Пропущенный')))),
        d.id,
        NULL)) AS total2,
    COUNT(IF((p.tipe = 'А' AND (d.longz > '00:00:00'))
            OR ((p.tipe = 'BATC' OR p.tipe = 'ВАТС')
            AND (d.longz > '00:00:10'
            AND (d.code2 = 'успешный'
            OR d.code2 = 'Успешный'))),
        d.id,
        NULL)) AS usp,
    COUNT(IF(((d.code = '17')
            AND (d.longz = '00:00:00')),
        d.id,
        NULL)) AS zan,
    COUNT(IF((p.tipe = 'А'
            AND ((d.code = '16' OR d.code = '18'
            OR d.code = '19'))
            AND d.longz = '00:00:00')
            OR ((p.tipe = 'BATC' OR p.tipe = 'ВАТС')
            AND (d.code2 = 'пропущенный'
            OR d.code2 = 'Пропущенный')),
        d.id,
        NULL)) AS bo
FROM
    (sp_org o
    JOIN sp_phone p ON p.id_org = o.id)
        JOIN
    `data` d ON d.tel = p.id
WHERE
    o.id IN (3)
        AND ((d.date BETWEEN '2020-12-21 00:00' AND '2020-12-21 23:59')
        OR d.date IS NULL)
GROUP BY p.id
ORDER BY o.orgname
;


Пожалуйста!
...
Рейтинг: 0 / 0
Запрос COUNT(IF)JOIN WHERE GROUP BY
    #40037000
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
1212121212333
не работает на сервере
Не работают, извиняюсь, негры в африке. А запрос либо даёт ожидаемый результат, либо отличающийся от ожидаемого, либо сообщение об ошибке.

1212121212333
не работает на сервере. В MySQL Workbench работает.

А воркбенч, полагаешь, сам выполняет запрос? огорчу - он передаёт запрос серверу, а сервер его выполняет.
...
Рейтинг: 0 / 0
Запрос COUNT(IF)JOIN WHERE GROUP BY
    #40037001
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
1212121212333

Код: plsql
1.
2.
3.
4.
5.
6.
SELECT 
    o.orgname AS 'организация',
...
GROUP BY p.id
ORDER BY o.orgname
;


ONLY_FULL_GROUP_BY
...
Рейтинг: 0 / 0
Запрос COUNT(IF)JOIN WHERE GROUP BY
    #40037002
1212121212333
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Akina
1212121212333
не работает на сервере
Не работают, извиняюсь, негры в африке. А запрос либо даёт ожидаемый результат, либо отличающийся от ожидаемого, либо сообщение об ошибке.

1212121212333
не работает на сервере. В MySQL Workbench работает.

А воркбенч, полагаешь, сам выполняет запрос? огорчу - он передаёт запрос серверу, а сервер его выполняет.
...
Рейтинг: 0 / 0
Запрос COUNT(IF)JOIN WHERE GROUP BY
    #40037003
1212121212333
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Akina
1212121212333


ONLY_FULL_GROUP_BY

отключил, не помогло,
выдает "15"
...
Рейтинг: 0 / 0
Запрос COUNT(IF)JOIN WHERE GROUP BY
    #40037026
1212121212333
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Akina,

пробовал добавить в GROUP недостающие поля - пустой ответ в ошибке 15
...
Рейтинг: 0 / 0
Запрос COUNT(IF)JOIN WHERE GROUP BY
    #40037067
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
1212121212333
пустой ответ в ошибке 15
Фраза совершенно невменяемая. Если получаете сообщение об ошибке - цитируйте его полностью без какой-либо редакции.
...
Рейтинг: 0 / 0
Запрос COUNT(IF)JOIN WHERE GROUP BY
    #40037074
1212121212333
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Akina, спасибо за помощь!
...
Рейтинг: 0 / 0
Запрос COUNT(IF)JOIN WHERE GROUP BY
    #40037077
Gluck99
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
1212121212333
Код: plsql
1.
2.
            OR ((d.code2 = 'пропущенный')
            OR (d.code2 = 'Пропущенный'))))

Если поле code2 сделать хотя бы ENUM (или SET), то можно избежать подобных двойных проверок.
...
Рейтинг: 0 / 0
Запрос COUNT(IF)JOIN WHERE GROUP BY
    #40037080
Gluck99
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
1212121212333,
Код: sql
1.
2.
3.
4.
5.
FROM
    (sp_org o
    JOIN sp_phone p ON p.id_org = o.id) <-- вот тут
        JOIN
    `data` d ON d.tel = p.id

А тут псевдоним не пропущен у вас (после закрывающейся скобки)?
...
Рейтинг: 0 / 0
Запрос COUNT(IF)JOIN WHERE GROUP BY
    #40037084
1212121212333
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Gluck99,
К сожалению, работаю с тем, что есть, без возможности изменений в структуре.
...
Рейтинг: 0 / 0
Запрос COUNT(IF)JOIN WHERE GROUP BY
    #40037088
1212121212333
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Akina, Спасибо за Ваше терпение. Последний неадекватный вопрос. Подскажите, как в выборку добавить номера телефонов, по которым не нашлись никакие условия в COUNT?
...
Рейтинг: 0 / 0
Запрос COUNT(IF)JOIN WHERE GROUP BY
    #40037106
Фотография Akina
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Gluck99
1212121212333
Код: plsql
1.
2.
            OR ((d.code2 = 'пропущенный')
            OR (d.code2 = 'Пропущенный'))))


Если поле code2 сделать хотя бы ENUM (или SET), то можно избежать подобных двойных проверок.Проще использовать CI collation.
Gluck99
А тут псевдоним не пропущен у вас (после закрывающейся скобки)?
Тут не нужен псевдоним - внутри скобок не подзапрос.

1212121212333
как в выборку добавить номера телефонов, по которым не нашлись никакие условия в COUNT?
Вероятно, COUNT(*) - (сумма остальных COUNT) ? Или я не понял вопроса.
...
Рейтинг: 0 / 0
Запрос COUNT(IF)JOIN WHERE GROUP BY
    #40037211
1212121212333
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Akina, да, видимо я очень неточно выражаюсь.
Вкратце, в таблице номеров телефонов за организацией числится больше телефонов, чем в таблице данных со звонками. Хотелось бы, чтоб они так же попадали в выдачу, но все столбцы с count были заполнены "0". Я понимаю, что в cross join они никак не попадут, но опыты с левым и правым объединениями не привели к желаемым результатам.
...
Рейтинг: 0 / 0
Запрос COUNT(IF)JOIN WHERE GROUP BY
    #40037226
Gluck99
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Akina
Проще использовать CI collation
Не думаю. Вопрос не только в сравнении, но и в хранении. Там судя по всему просто текстовое поле. В конкретном случае можно изменить условия collation, но это полумеры.
Преимущество перечислений в том, что их кроме всего прочего можно адресовать по внутреннему индексу.
...
Рейтинг: 0 / 0
15 сообщений из 15, страница 1 из 1
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Запрос COUNT(IF)JOIN WHERE GROUP BY
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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