Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / MySQL [игнор отключен] [закрыт для гостей] / Запрос COUNT(IF)JOIN WHERE GROUP BY / 15 сообщений из 15, страница 1 из 1
19.01.2021, 09:05
    #40036997
1212121212333
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запрос COUNT(IF)JOIN WHERE GROUP BY
Запрос не работает на сервере. В 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
19.01.2021, 09:21
    #40037000
Akina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запрос COUNT(IF)JOIN WHERE GROUP BY
1212121212333
не работает на сервере
Не работают, извиняюсь, негры в африке. А запрос либо даёт ожидаемый результат, либо отличающийся от ожидаемого, либо сообщение об ошибке.

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

А воркбенч, полагаешь, сам выполняет запрос? огорчу - он передаёт запрос серверу, а сервер его выполняет.
...
Рейтинг: 0 / 0
19.01.2021, 09:25
    #40037001
Akina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запрос COUNT(IF)JOIN WHERE GROUP BY
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
19.01.2021, 09:29
    #40037002
1212121212333
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запрос COUNT(IF)JOIN WHERE GROUP BY
Akina
1212121212333
не работает на сервере
Не работают, извиняюсь, негры в африке. А запрос либо даёт ожидаемый результат, либо отличающийся от ожидаемого, либо сообщение об ошибке.

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

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


ONLY_FULL_GROUP_BY

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

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

Если поле code2 сделать хотя бы ENUM (или SET), то можно избежать подобных двойных проверок.
...
Рейтинг: 0 / 0
19.01.2021, 12:16
    #40037080
Gluck99
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запрос COUNT(IF)JOIN WHERE GROUP BY
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
19.01.2021, 12:21
    #40037084
1212121212333
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запрос COUNT(IF)JOIN WHERE GROUP BY
Gluck99,
К сожалению, работаю с тем, что есть, без возможности изменений в структуре.
...
Рейтинг: 0 / 0
19.01.2021, 12:26
    #40037088
1212121212333
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запрос COUNT(IF)JOIN WHERE GROUP BY
Akina, Спасибо за Ваше терпение. Последний неадекватный вопрос. Подскажите, как в выборку добавить номера телефонов, по которым не нашлись никакие условия в COUNT?
...
Рейтинг: 0 / 0
19.01.2021, 13:21
    #40037106
Akina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Запрос COUNT(IF)JOIN WHERE GROUP BY
Gluck99
1212121212333
Код: plsql
1.
2.
            OR ((d.code2 = 'пропущенный')
            OR (d.code2 = 'Пропущенный'))))


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

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


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