Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/unit-testing/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 使用一个查询的(多个)结果作为另一个查询的输入_Sql_Sql Server_Multiple Results - Fatal编程技术网

Sql 使用一个查询的(多个)结果作为另一个查询的输入

Sql 使用一个查询的(多个)结果作为另一个查询的输入,sql,sql-server,multiple-results,Sql,Sql Server,Multiple Results,我正在用Vb.net和SQL编写一个票务程序 我有两个表需要在查询中使用。 一张表票证包含我需要的所有值。 第二个表Ticketactions包含链接到票证的所有Ticketactions 我想要的是创建一个搜索,搜索以下列: 票务描述 票务 动作描述 我有一个搜索功能,可以很好地搜索Tickets表 SELECT tickets.TicketNumber, tickets.Description, tickets.departmentname,

我正在用Vb.net和SQL编写一个票务程序

我有两个表需要在查询中使用。 一张表票证包含我需要的所有值。 第二个表Ticketactions包含链接到票证的所有Ticketactions

我想要的是创建一个搜索,搜索以下列:

票务描述 票务 动作描述 我有一个搜索功能,可以很好地搜索Tickets表

        SELECT 
    tickets.TicketNumber, 
    tickets.Description,
    tickets.departmentname,
    tickets.devicename,
    tickets.creatorname,
    tickets.creationdate,
    tickets.ExecutionDate,
    tickets.closedate
    stateName,
    PriorityName,
    FullName,
         FROM tickets
    INNER Join Users On Tickets.AssignedTo = Users.UserID
    INNER Join States On Tickets.StateID = States.StateID 
    INNER Join Priorities On Tickets.priority = Priorities.PriorityID 
         WHERE Description Like '%SEARCHTEXT%' OR TicketNumber Like '%SEARCHTEXT%'
我想用TicketActions表中查询结果的附加ticketNumber展开上述查询

    SELECT TicketNumber
    FROM dbo.ticketaction
    WHERE ActionDescription like '%SEARCHTEXT%' 
因此,结果应该与第一个查询一样精确,但添加了第二个查询找到的ticketNumber


任何帮助都是非常受欢迎的,因为我真的不知道如何实现这一点

你应该可以通过一个简单的联盟来实现这一点?下面是示例代码,但可能不是您真正想要的


你应该可以通过一个简单的联盟来做到这一点?下面是示例代码,但可能不是您真正想要的


要回答你字面上的问题,应该是这样的

SELECT 
    tickets.TicketNumber, 
    tickets.Description,
    tickets.departmentname,
    tickets.devicename,
    tickets.creatorname,
    tickets.creationdate,
    tickets.ExecutionDate,
    tickets.closedate
    stateName,
    PriorityName,
    FullName,
FROM
           tickets
INNER Join Users      On Tickets.AssignedTo = Users.UserID
INNER Join States     On Tickets.StateID = States.StateID 
INNER Join Priorities On Tickets.priority = Priorities.PriorityID 
WHERE tickets.Description Like '%SEARCHTEXT%'
   OR tickets.TicketNumber Like '%SEARCHTEXT%'
   OR tickets.TicketNumber IN (SELECT TicketNumber
                                 FROM dbo.ticketaction
                                WHERE ActionDescription like '%SEARCHTEXT%'
                              )
更好的解决方案是在ticketAction表上使用联接

假设每张票都有一张票。如果不是这样,请使用左连接

或者,存在


要回答你字面上的问题,应该是这样的

SELECT 
    tickets.TicketNumber, 
    tickets.Description,
    tickets.departmentname,
    tickets.devicename,
    tickets.creatorname,
    tickets.creationdate,
    tickets.ExecutionDate,
    tickets.closedate
    stateName,
    PriorityName,
    FullName,
FROM
           tickets
INNER Join Users      On Tickets.AssignedTo = Users.UserID
INNER Join States     On Tickets.StateID = States.StateID 
INNER Join Priorities On Tickets.priority = Priorities.PriorityID 
WHERE tickets.Description Like '%SEARCHTEXT%'
   OR tickets.TicketNumber Like '%SEARCHTEXT%'
   OR tickets.TicketNumber IN (SELECT TicketNumber
                                 FROM dbo.ticketaction
                                WHERE ActionDescription like '%SEARCHTEXT%'
                              )
更好的解决方案是在ticketAction表上使用联接

假设每张票都有一张票。如果不是这样,请使用左连接

或者,存在


这看起来像是一个标准的子查询,因此添加到顶部查询中,其中TicketNumber in SELECT TicketNumber FROM dbo.ticketaction where ActionDescription,如“%SEARCHTEXT%”,或者只需将ticketaction添加到顶部查询中,并在TicketNumberI上进行内部联接即可。在您的查询结束时,将另一个或和他在其注释中所述的内容放入。这看起来像是一个标准子查询,因此将TicketNumber添加到顶部查询中,其中SELECT TicketNumber FROM dbo.ticketaction中的ActionDescription(如“%SEARCHTEXT%”),或者将ticketaction添加到顶部查询中,并在TicketNumber上进行内部联接照里奇的建议去做。在你的问题结束时,写下另一个或,以及他在评论中所说的。这不是我想要的。我想从第二个查询中获取Ticketnumber,并将其作为第一个查询的Ticketnumber提供。没错,Rich,但我无法使其工作,因为第一个查询已经有联接…:阅读第一部分错误-抱歉,Rich评论了一个可行的解决方案。@Karstieman您只需要一个额外的内部联接行,即“票证上的内部联接票证编号=票证编号=票证编号。票证编号”和“ActionDescription like“%SEARCHTEXT%”位的附加or子句。为了在第一个查询中更清晰,我可能还会为PriorityName和FullName列添加表名。这不是我想要的。我想从第二个查询中获取Ticketnumber,并将其作为第一个查询的Ticketnumber提供。没错,Rich,但我无法使其工作,因为第一个查询已经有联接…:阅读第一部分错误-抱歉,Rich评论了一个可行的解决方案。@Karstieman您只需要一个额外的内部联接行,即“票证上的内部联接票证编号=票证编号=票证编号。票证编号”和“ActionDescription like“%SEARCHTEXT%”位的附加or子句。为了在第一次查询中清晰起见,我可能还会为PriorityName和FullName列添加表名。谢谢Mat,两种解决方案都有效!这正是我在寻找的Hanks Mat,你的两个解决方案都有效!这正是我想要的
SELECT 
    tickets.TicketNumber, 
    tickets.Description,
    tickets.departmentname,
    tickets.devicename,
    tickets.creatorname,
    tickets.creationdate,
    tickets.ExecutionDate,
    tickets.closedate
    stateName,
    PriorityName,
    FullName,
FROM
           tickets
INNER JOIN Users        ON tickets.AssignedTo = Users.UserID
INNER JOIN States       ON tickets.StateID = States.StateID 
INNER JOIN Priorities   ON tickets.priority = Priorities.PriorityID 
INNER JOIN ticketAction ON ticket.TicketNumber = ticketAction.TicketNumber
WHERE tickets.Description Like '%SEARCHTEXT%'
   OR tickets.TicketNumber Like '%SEARCHTEXT%'
   OR ticketAction.ActionDescription LIKE '%SEARCHTEXT%'
SELECT 
    tickets.TicketNumber, 
    tickets.Description,
    tickets.departmentname,
    tickets.devicename,
    tickets.creatorname,
    tickets.creationdate,
    tickets.ExecutionDate,
    tickets.closedate
    stateName,
    PriorityName,
    FullName,
FROM
           tickets
INNER Join Users      On Tickets.AssignedTo = Users.UserID
INNER Join States     On Tickets.StateID = States.StateID 
INNER Join Priorities On Tickets.priority = Priorities.PriorityID 
WHERE tickets.Description Like '%SEARCHTEXT%'
   OR tickets.TicketNumber Like '%SEARCHTEXT%'
   OR EXISTS (SELECT *
                FROM dbo.ticketaction
               WHERE ActionDescription like '%SEARCHTEXT%'
                 AND TicketNumber = tickets.TicketNumber
             )