Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / Firebird, InterBase Новый топик    Ответить
 Перенос запроса с MySQL на Firebird 2.0  [new]
Waik
Member

Откуда:
Сообщений: 6
Здравствуйте. Я не специалист по БД. Мой уровень это простые запросы. Появилась задача получить некоторую статистику из старой CRM ранее использовавшейся в компании(сейчас переходим на новую и конечно экономим на профильных специалистах).

Сначала я делал бекап данных из Firebird в mysql и работал с ней, так оказалось не удобно. Решил работать напрямую с Firebird, но пришлось поправить запрос, что у меня не вышло. Прошу вашей помощи.

Таблица History - это заметки.
автор
NOTE - Текст комментария (VARCHAR)
DATECR - Дата создания комментария (DATE)
IDCREATOR - ID создателя (INTEGER)
HISTTYPE - тип заметки (INTEGER)

Таблица Users- пользователи
автор
IDUSER - id юзера (INTEGER)
NAME - ФИО юзера (VARCHAR)

Таблица Customer - компании
автор
IDCUST - id компании
IDUSER - id пользователя кто создал
DATECR - дата создания

Задача, получить статистику по пользователям:
автор
Количество созданных компаний.
Количество созданных заметок с TYPE 1
Количество созданных заметок с TYPE 2
Количество созданных заметок с TYPE 3


Запрос MySql:
автор
SELECT users.name, company_stat.company_count, comment_stat.type1, comment_stat.type2, comment_stat.type3
FROM users
LEFT JOIN ( SELECT iduser, COUNT(idcust) company_count
FROM customer
GROUP BY iduser ) AS company_stat ON users.iduser = company_stat.iduser
LEFT JOIN ( SELECT idcreator, SUM(type=1) type1, SUM(type=2) type2, SUM(type=3) type3
FROM history
GROUP BY idcreator ) AS comment_stat ON users.iduser = comment_stat.idcreator


Проверяю через IBExpert, ошибка при выполнении запроса:
"Error Message:
----------------------------------------
There is no Table for join"

C Уважением, Waik/
22 июл 19, 08:27    [21931421]     Ответить | Цитировать Сообщить модератору
 Re: Перенос запроса с MySQL на Firebird 2.0  [new]
Симонов Денис
Member

Откуда: Рязань
Сообщений: 9806
Waik,

ты точно уверен что у тебя Firebird 2.0, а не 1.5. 1.5 не поддерживал производные таблицы
22 июл 19, 11:29    [21931546]     Ответить | Цитировать Сообщить модератору
 Re: Перенос запроса с MySQL на Firebird 2.0  [new]
Dimitry Sibiryakov
Member

Откуда:
Сообщений: 48144

Во-первых, это ошибка выдаётся IBExpert, которому установили неправильную версию парсера.
Во-вторых, в SUM(type=1) придётся использовать CASE, поскольку даже тройка вроде как не
позволяет суммировать булевские значения.

Posted via ActualForum NNTP Server 1.5

22 июл 19, 12:39    [21931642]     Ответить | Цитировать Сообщить модератору
 Re: Перенос запроса с MySQL на Firebird 2.0  [new]
Waik
Member

Откуда:
Сообщений: 6
автор
ты точно уверен что у тебя Firebird 2.0


Уверен.

автор
Во-первых, это ошибка выдаётся IBExpert, которому установили неправильную версию парсера.
Во-вторых, в SUM(type=1) придётся использовать CASE, поскольку даже тройка вроде как не
позволяет суммировать булевские значения.


Исправил на CASE и вы оказались совершенно правый! Это была ошибка парсера IBExpert, подключился через adodb и запрос выполнился как положено. Я потратил на это три дня т.к тестировал исключительно через IBExpert. Большое спасибо!!
22 июл 19, 13:16    [21931687]     Ответить | Цитировать Сообщить модератору
 Re: Перенос запроса с MySQL на Firebird 2.0  [new]
Симонов Денис
Member

Откуда: Рязань
Сообщений: 9806
Waik,

ну про неправильно выставленную версию Firebird в регистрационной информации IB Expert ты конечно же всё проигнорировал
22 июл 19, 13:47    [21931720]     Ответить | Цитировать Сообщить модератору
 Re: Перенос запроса с MySQL на Firebird 2.0  [new]
Waik
Member

Откуда:
Сообщений: 6
Симонов Денис,

автор
ну про неправильно выставленную версию Firebird в регистрационной информации IB Expert ты конечно же всё проигнорировал


Нет. Там стоит 2.0. Там я все верно указал.
22 июл 19, 15:25    [21931803]     Ответить | Цитировать Сообщить модератору
Все форумы / Firebird, InterBase Ответить