У меня есть две таблицы и вам нужно присоединиться к ним.
Таблица 1: ticket
ticket_id topic_id
---------------------
0001 | 1
0002 | 3
Примечания: topic_id
в таблице ticket
магазина величайшая sort
заказа. Ниже я объясню, что - sort
такое.
Таблица 2: help_topic
topic_id parent_id sort topic_name
---------------------------------------------
1 | 0 | 0 | request
2 | 1 | 1 | shipment
3 | 2 | 2 | problem
Примечания: sort 0 = category
sort 1 = case_type
sort 2 = sub_case_type
если у билета нет case_type и sub_case_type, оставьте поле пустым
И мне нужно показать это так:
ticket_id | category | case_type | sub_case_type
-----------------------------------------------------
0001 | request | |
0002 | request | shipment | problem
Я пробовал этот запрос, чтобы получить тему:
SELECT ticket.ticket_id,
ticket.topic_id,
help_topic.topic_name
FROM ticket
INNER JOIN help_topic
ON ticket.topic_id = help_topic.topic_id
Я запускаю 3 разных запроса, чтобы получить категорию темы, case_type и sub_case_type, и это дает мне проблему, потому что я предполагаю, что первый запрос - получить sub_case_type
но не каждая topic
имеет case_type
и sub_case_type
Вы можете мне помочь?
У меня есть некоторые сомнения относительно вашего дизайна БД, потому что если вы добавите новую строку в таблицу help_topic
, вы должны изменить свой SQL, чтобы получить ваши результаты. Или, может быть, SQL недостаточно, чтобы дать вам правильное решение, и вы должны использовать свой язык программирования, чтобы получить то, что вы хотите на уровне презентации, а не на уровне данных.
Во всяком случае, этот SQL будет извлекать нужные вам данные, но НЕ, как вы ожидали. Вы получите что-то вроде этого:
ticket_id | ht_1 | ht_2 | ht_3
-----------------------------------------------------
0001 | request | |
0002 | problem | shipment | request
Как вы можете видеть, темы не выровнены. Во всяком случае, это SQL, если это может вам помочь:
SELECT T.ticket_id,
ticket.topic_id,
HT1.topic_name AS ht_1,
HT2.topic_name AS ht_2,
HT3.topic_name AS ht_3
FROM ticket T
LEFT JOIN help_topic HT1
ON T = HT1.topic_id
LEFT JOIN help_topic HT2
ON HT1.parent_id = HT2.sort
LEFT JOIN help_topic HT3
ON HT2.parent_id = HT3.sort
попробуй это.
select t.ticket_id ,if(sort = 0,"request","") as category from ticket as t
join help_topic as h on t.ticket_id = h.topic_id;