如何在另一个sql查询中使用sql查询的结果

ldioqlga  于 2021-06-19  发布在  Mysql
关注(0)|答案(1)|浏览(527)

我正在用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

组合查询的预期结果应为:
打开
分配
关闭
暂缓
如何组合这两个查询?任何帮助都将不胜感激!

insrf1ej

insrf1ej1#

你可以改为 States 作为你最左边的table LEFT JOIN 去售票处 stateID 以及 TicketNumber . 匹配 TicketNumber 在连接条件中,而不是 Where .
制作 States 因为最左边的表将确保考虑所有statename值。
对于特定的票号, t.StateIdNULL (后左连接),除了一个statename(当前分配给票证)。
你可以简单地把它们分类 t.StateId 按降序排列。票证的当前状态名将首先出现在列表中,其余的将随后排序。
改为尝试左连接:

SELECT s.StateName 
FROM States AS s
LEFT JOIN Tickets AS t 
  ON s.stateID = t.StateID AND 
     t.TicketNumber = $intTicketNumber  -- $intTicketNumber is the input variable
ORDER BY t.StateID DESC, 
         s.StateName DESC

相关问题