Позвольте мне начать с того, что я не эксперт по sql или эксперт из jasper-reports, но я пытаюсь создать отчет, который показывает, кто вошел в мой проект компанией и клиент в месяц. Я также знаю, что я разрабатываю запрос, чтобы посмотреть 1 месяц в будущем, так что у меня есть данные, чтобы справиться с тем, что компания подписывает создание клиента или 2, а затем ничего не регистрирует и не делает.MySQL Помогите соединить таблицы, чтобы сделать jasper ireport
Это то, что я хочу, возвращаемые данные выглядеть следующим образом:
Date Company Client Client_ID Authentications Unique_Users
2016-may Company-A client-1 1 24 1
2016-may Company-A client-2 2 10 2
2016-may Company-A client-3 3 0 0
2016-June Company-A client-1 1 0 0
2016-June Company-A client-2 2 0 0
2016-June Company-A client-3 3 0 0
У меня есть этот запрос, который будет возвращать дата, название компании, имя клиента, идентификатор клиента, Авт и уникальных пользователей в течение нескольких месяцев, что действия произошел. Этот запрос не содержит строк, которые не имеют аутентификации.
SELECT
DATE_FORMAT(rq.requestTime, '%Y-%M') AS Date,
company.name AS Company,
client.name AS Client,
client.id AS client_id,
COUNT(rq.id) AS Authentications,
COUNT(DISTINCT rq.personguid) AS Unique_Users
FROM
company JOIN CLIENT ON company.id = client.company_id
LEFT JOIN request_queue rq ON rq.clientid = client.id
WHERE
company.id = 19
AND rq.status = 'complete' AND rq.request_type LIKE "%authorize%"
AND MONTH(rq.requestTime) >= MONTH("2016-05-01")
AND MONTH(rq.requestTime) <= MONTH("2016-06-01")
GROUP BY
client_id, Date
ORDER BY Date ASC, client_id ASC;
Это возвращает что-то вроде этого, потому что некоторые клиенты не вошли в систему в мае и июне не имеет записей все же, в основном отсутствуют данные request_queue нет строк:
Date Company Client Client_ID Authentications Unique_Users
2016-may Company-A client-1 1 24 1
2016-may Company-A client-2 2 10 2
В этот момент я придумал это.
SELECT
dateTable.mydate AS Date,
clientTable.ClientName AS Client,
clientTable.CompanyName AS Company,
clientTable.client_id AS Client_ID
FROM
(SELECT
client.name AS ClientName,
client.id AS client_id,
company.name AS CompanyName
FROM
company JOIN CLIENT ON company.id = client.company_id
WHERE company.id = 19) clientTable
JOIN
(SELECT
DATE_FORMAT(temp.thedate,'%Y-%M') AS mydate,
temp.thedate AS theDate FROM (
SELECT
DATE_ADD("2016-05-01", INTERVAL u.i MONTH) AS thedate
FROM i AS u ORDER BY thedate) temp
WHERE temp.thedate <= "2016-06-01") dateTable;
Это дает мне таблицу, которая имеет даты, названия компаний, имена клиентов, и клиентские идентификаторы без данных request_queue.
Эта таблица выглядит следующим образом:
Date Company Client Client_ID
2016-may Company-A client-1 1
2016-may Company-A client-2 2
2016-may Company-A client-3 3
2016-June Company-A client-1 1
2016-June Company-A client-2 2
2016-June Company-A client-3 3
Есть ли способ, чтобы объединить эти данные, чтобы получить диаграмму, расположенную в верхней части этого поста?
Дополнительная информация: Целью является передать результаты моего запроса дизайнеру-дизайнеру отчета jasper. Я использую данные для создания кросс-таблицы с датами по вершине и клиентами с левой стороны и помещением аутентификации в перекрестные строки.
Я не касался sql, так как колледж лет назад. Любые мысли или рекомендации будут оценены.
Спасибо, это работает отлично. Я работаю над этим всю ночь. Игра с профсоюзами, объединениями и группами и просто не могли понять. – ChoklatStu