我正在用mysql在vb.net中编写一个票证程序。
我想要的是使用我从查询1获得的票证可以拥有的statename(open/closed/on hold/etc),并在查询2中使用它来获得所有statename的列表,第一个查询的结果作为第一项。
我现在使用两个查询,但我确信它可以在一个查询中完成。
查询1:
SELECT StateName
FROM Tickets t
JOIN States s
ON s.stateID = t.StateID
WHERE TicketNumber = & *intTicketNumber*
-->result=“打开”
问题2:
SELECT StateName
from States
ORDER
BY(case when StateName = '" & *StrStateName* & "' then 0 else 1 end)
, StateName desc
组合查询的预期结果应为:
打开
分配
关闭
暂缓
如何组合这两个查询?任何帮助都将不胜感激!
1条答案
按热度按时间insrf1ej1#
你可以改为
States
作为你最左边的tableLEFT JOIN
去售票处stateID
以及TicketNumber
. 匹配TicketNumber
在连接条件中,而不是Where
.制作
States
因为最左边的表将确保考虑所有statename值。对于特定的票号,
t.StateId
将NULL
(后左连接),除了一个statename(当前分配给票证)。你可以简单地把它们分类
t.StateId
按降序排列。票证的当前状态名将首先出现在列表中,其余的将随后排序。改为尝试左连接: