0% found this document useful (0 votes)
10 views

Query Staff (User - Type 4)

The document is a SQL query that selects ticket data from various tables and joins them together. It selects ticket details like ID, number, date, topic, priority, status, assigned user, and other fields. It filters for tickets from 2023 that are open, and those that the user is involved in either as the creator, collaborator, assigned user, or responsible for a topic/item/brand. It orders results by status, whether assigned, if answered, and ticket number.

Uploaded by

Rio Hendriawan
Copyright
© © All Rights Reserved
Available Formats
Download as TXT, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
10 views

Query Staff (User - Type 4)

The document is a SQL query that selects ticket data from various tables and joins them together. It selects ticket details like ID, number, date, topic, priority, status, assigned user, and other fields. It filters for tickets from 2023 that are open, and those that the user is involved in either as the creator, collaborator, assigned user, or responsible for a topic/item/brand. It orders results by status, whether assigned, if answered, and ticket number.

Uploaded by

Rio Hendriawan
Copyright
© © All Rights Reserved
Available Formats
Download as TXT, PDF, TXT or read online on Scribd
You are on page 1/ 7

Query > Staff (user_type : 4 user fuad)

SELECT
tick.id,
tick.ticket_number,
CAST(
DATE_FORMAT(
tick.ticket_date,
'%m/%d/%Y %H:%i'
) AS CHAR
) AS ticket_date,
tick.topic_id,
IFNULL(topic.topic_name, '') AS topic_name,
topic.department_id AS topic_department_id,
IFNULL(topic_dep.department_name, '') AS topic_department_name,
tick.topic_brand_id,
IFNULL(
topic_brand.topic_brand_name,
''
) AS topic_brand_name,
tick.topic_item_id,
topic_category_name (tick.id) AS topic_item_name,
/*IFNULL(t.topic_item_name,'') AS topic_item_name,*/
IFNULL(tick.priority_id, '') AS priority_id,
IF(
IFNULL(tick.priority_id, 0) = 1,
'Urgency',
IF(
IFNULL(tick.priority_id, 0) = 2,
'High',
IF(
IFNULL(tick.priority_id, 0) = 3,
'Normal',
IF(
IFNULL(tick.priority_id, 0) = 4,
'Low',
'None'
)
)
)
) AS priority_name,
IFNULL(sla.id, '') AS sla_id,
IFNULL(sla.sla_name, '') AS sla_name,
IFNULL(sla.days, 0) AS sla_days,
tick.ticket_subject,
tick.subject_location,
tick.subject_desc,
IFNULL(tick.user_id, 0) AS user_id,
IFNULL(user.full_name, '') AS user_name,
IFNULL(user.email, '') AS user_email,
IFNULL(user.department_id, 0) AS user_dept_id,
IFNULL(user_dep.department_name, '') AS user_dept_name,
IFNULL(user.branch_id, 0) AS user_branch_id,
IFNULL(branch.branch_name, '') AS user_branch_name,
IFNULL(user.phone, '') AS user_phone,
tick.user_collaborator_id,
/*user_collaborator_name(tick.id)*/
'' AS user_collaborator_name,
/*IFNULL(u.user_collaborator_name,'') AS user_collaborator_name,*/
IFNULL(tick.assigned_id, 0) AS assigned_id,
IFNULL(assign.full_name, '') AS assigned_name,
IFNULL(assign.email, '') AS assigned_email,
IFNULL(assign.department_id, 0) AS assigned_dept_id,
IFNULL(assign_dep.department_name, '') AS assigned_dept_name,
CAST(
DATE_FORMAT(
tick.assigned_date,
'%m/%d/%Y %H:%i'
) AS CHAR
) AS assigned_date,
tick.status_flag,
IF(
IFNULL(tick.status_flag, 0) = 0,
'Open',
IF(
IFNULL(tick.status_flag, 0) = 1,
'Closed',
IF(
IFNULL(tick.status_flag, 0) = 2,
'Cancelled',
'None'
)
)
) AS STATUS,
tick.process_flag,
IF(
IFNULL(tick.status_flag, 0) = 0,
IF(
IFNULL(tick.process_flag, 0) = 0,
'No',
'Yes'
),
'No'
) AS PROCESS,
IF(
IFNULL(tick.status_flag, 0) = 0,
IF(tick.due_date < SYSDATE(), 1, 0),
0
) AS overdue_flag,
IF(
IFNULL(tick.status_flag, 0) = 0,
IF(
tick.due_date < SYSDATE(),
'Yes',
'No'
),
'No'
) AS overdue,
tick.answered_flag,
IF(
IFNULL(tick.answered_flag, 0) = 0,
'No',
'Yes'
) AS answered,
IF(
tick.due_date IS NULL,
'',
DATE_FORMAT(
CONCAT(
DATE_FORMAT(tick.due_date, '%Y-%m-%d'),
DATE_FORMAT(tick.ticket_date, ' %H:%i')
),
'%m/%d/%Y %H:%i'
)
) AS due_date,
/*IFNULL(CONCAT( FLOOR(TIMESTAMPDIFF(SECOND, tick.assigned_date,tick.closed_date)
/ 86400), ' days ', FLOOR((TIMESTAMPDIFF(SECOND,
tick.assigned_date,tick.closed_date) % 86400)/3600), ' hours ',
FLOOR((TIMESTAMPDIFF(SECOND, tick.assigned_date,tick.closed_date) % 3600)/60), '
minutes ', (TIMESTAMPDIFF(SECOND, tick.assigned_date,tick.closed_date) % 60), '
seconds' ), '') AS downtime_result, */
IF(
tick.status_flag = 1,
IFNULL(
CONCAT(
(
FLOOR(
TIMESTAMPDIFF(
SECOND,
TIMESTAMP(
DATE_FORMAT(
tick.ticket_date,
'%Y-%m-%d %H:%i:00 %p'
)
),
TIMESTAMP(
DATE_FORMAT(
tick.closed_date,
'%Y-%m-%d %H:%i:00 %p'
)
)
) / 86400
) * 24
) + FLOOR(
(
TIMESTAMPDIFF(
SECOND,
TIMESTAMP(
DATE_FORMAT(
tick.ticket_date,
'%Y-%m-%d %H:%i:00 %p'
)
),
TIMESTAMP(
DATE_FORMAT(
tick.closed_date,
'%Y-%m-%d %H:%i:00 %p'
)
)
) % 86400
) / 3600
),
' hours ',
FLOOR(
(
TIMESTAMPDIFF(
SECOND,
TIMESTAMP(
DATE_FORMAT(
tick.ticket_date,
'%Y-%m-%d %H:%i:00 %p'
)
),
TIMESTAMP(
DATE_FORMAT(
tick.closed_date,
'%Y-%m-%d %H:%i:00 %p'
)
)
) % 3600
) / 60
),
' minutes'
),
''
),
''
) AS downtime_result,
IF(
tick.closed_date = NULL,
'',
CAST(
DATE_FORMAT(
tick.closed_date,
'%m/%d/%Y %H:%i'
) AS CHAR
)
) AS closed_date,
app.approve_desc AS approve_desc,
IF(
tick.voided_date = NULL,
'',
CAST(
DATE_FORMAT(
tick.voided_date,
'%m/%d/%Y %H:%i'
) AS CHAR
)
) AS voided_date,
tick.created_date,
tick.updated_date,
IFNULL(tick_rate.rates, 0) AS rates,
IFNULL(user_rate.full_name, '') AS rates_by_name,
IFNULL(tick_rate.comments, '') AS comments,
IFNULL(r.resp_id, 0) resp_id,
IF(
tick.user_id = 825,
1,
IFNULL(r.is_able_edit_ticket, 0)
) is_able_edit_ticket,
IFNULL(r.is_able_assign_ticket, 0) is_able_assign_ticket,
IF(
tick.user_id = 825,
1,
IFNULL(r.is_able_void_ticket, 0)
) is_able_void_ticket,
IF(
tick.user_id = 825,
1,
IFNULL(r.is_able_approve_ticket, 0)
) is_able_approve_ticket,
IF(
tick.user_id =825,
1,
IFNULL(r.is_able_reopen_ticket, 0)
) is_able_reopen_ticket,
IFNULL(r.is_able_create_post, 1) is_able_create_post,
IFNULL(
r.is_able_create_post_internal,
0
) is_able_create_post_internal,
IFNULL(
r.limited_only_assigned_ticket,
0
) limited_only_assigned_ticket
FROM
(SELECT
tc.id
FROM
hd_ticket tc
LEFT JOIN hd_topic tp
ON tc.topic_id = tp.id
LEFT JOIN hd_department dc
ON tp.department_id = dc.id
INNER JOIN hd_number n
ON LENGTH(
REPLACE(tc.user_collaborator_id, ',', '')
) <= LENGTH(tc.user_collaborator_id) - n.digit
WHERE 1 = 1
AND YEAR(tc.ticket_date) = 2023
AND CAST(
TRIM(
SUBSTRING_INDEX(
SUBSTRING_INDEX(
tc.user_collaborator_id,
',',
n.digit + 1
),
',',
- 1
)
) AS SIGNED
) = 825
AND dc.id = 12
AND tc.status_flag = 0
GROUP BY tc.id
UNION
SELECT
tc.id
FROM
hd_ticket tc
LEFT JOIN hd_topic tp
ON tc.topic_id = tp.id
LEFT JOIN hd_department dc
ON tp.department_id = dc.id
WHERE 1 = 1
AND YEAR(tc.ticket_date) = 2023
AND tc.user_id = 825
AND dc.id = 12
AND tc.status_flag = 0
GROUP BY tc.id
UNION
SELECT
tc.id
FROM
hd_ticket tc
LEFT JOIN hd_topic tp
ON tc.topic_id = tp.id
LEFT JOIN hd_user_resp_brand b
ON tc.topic_id = b.topic_id
AND tc.topic_brand_id = b.topic_brand_id
WHERE YEAR(tc.ticket_date) = 2023
AND tc.status_flag = 0
AND tp.department_id = 12
AND b.user_id = 825
GROUP BY tc.id
UNION
SELECT
tc.id
FROM
hd_ticket tc
INNER JOIN hd_number n
ON LENGTH(REPLACE(tc.topic_item_id, ',', '')) <= LENGTH(tc.topic_item_id) -
n.digit
LEFT JOIN hd_topic tp
ON tc.topic_id = tp.id
LEFT JOIN hd_department dc
ON tp.department_id = dc.id
WHERE YEAR(tc.ticket_date) = 2023
AND tc.status_flag = 0
AND EXISTS
(SELECT
i.user_id
FROM
hd_user_resp_item i
WHERE i.user_id = 825
AND tc.topic_id = i.topic_id
AND tc.topic_item_id = i.topic_item_id)
AND tp.department_id = 12
GROUP BY tc.id) t
LEFT JOIN hd_ticket tick
ON t.id = tick.id
LEFT JOIN
(SELECT
r.resp_id,
r.topic_id,
r.is_able_edit_ticket,
r.is_able_assign_ticket,
r.is_able_void_ticket,
r.is_able_approve_ticket,
r.is_able_reopen_ticket,
r.is_able_create_post,
r.is_able_create_post_internal,
r.limited_only_assigned_ticket
FROM
hd_user_responsibility r
WHERE 1 = 1
AND r.status_id = 1
AND r.user_id = 825) r
ON tick.topic_id = r.topic_id
LEFT JOIN hd_topic topic
ON tick.topic_id = topic.id
LEFT JOIN hd_department topic_dep
ON topic.department_id = topic_dep.id
LEFT JOIN hd_sla sla
ON topic.sla_id = sla.id
LEFT JOIN hd_user USER
ON tick.user_id = user.id
LEFT JOIN hd_department user_dep
ON user.department_id = user_dep.id
LEFT JOIN hd_branch branch
ON user.branch_id = branch.id
LEFT JOIN hd_user assign
ON tick.assigned_id = assign.id
LEFT JOIN hd_department assign_dep
ON assign.department_id = assign_dep.id
LEFT JOIN hd_topic_brand topic_brand
ON tick.topic_brand_id = topic_brand.id
LEFT JOIN hd_ticket_rates tick_rate
ON tick.id = tick_rate.ticket_id
LEFT JOIN hd_user user_rate
ON tick_rate.rates_by_id = user_rate.id
LEFT JOIN
(SELECT
approve_desc,
ticket_id
FROM
hd_ticket_approve
WHERE id IN
(SELECT
MAX(id)
FROM
hd_ticket_approve
GROUP BY ticket_id)) app
ON tick.id = app.ticket_id
WHERE 1 = 1
AND IF(
IFNULL(
r.limited_only_assigned_ticket,
0
) = 1,
825,
IFNULL(tick.assigned_id, 0)
) = IFNULL(tick.assigned_id, 0)
ORDER BY tick.status_flag,
IF(IFNULL(tick.assigned_id, 0) = 0, 0, 1),
tick.answered_flag,
tick.ticket_number DESC

You might also like