我有两张 table ,需要加入它们。
表 1:门票
ticket_id topic_id
---------------------
0001 | 1
0002 | 3
注意:表ticket
中的topic_id
存储最大的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 = 案例类型
排序 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
关于mysqli 嵌套选择查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48317710/