我有两张桌子,需要加入。
表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
注意:排序0 =类别
排序1 = case_type
排序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
你能帮助我吗?
答案 0 :(得分:0)
我对您的数据库设计有一些疑问,因为如果您在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
答案 1 :(得分:0)
试试这个。
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;