Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/75.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_Ms Access - Fatal编程技术网

Sql 仅在收到所有订单详细信息时显示订单

Sql 仅在收到所有订单详细信息时显示订单,sql,ms-access,Sql,Ms Access,我有两个表,一个是OrderHeader和OrderDetail表。我需要做的是检查Detail表中与OrderHeader表相关的每个记录的StatusFK 因此,如果Detail表中StatusFK=2中的所有相关记录,那么我希望在查询中显示这些记录,因为我将对OrderHeader记录运行更新,以将其状态更改为received 但是假设detail表中有6条记录与OrderHeader表相关,但6条记录中只有5条记录具有StatusFK=2,那么我不想显示它,因为它还没有准备好被归类为完全

我有两个表,一个是
OrderHeader
OrderDetail
表。我需要做的是检查
Detail
表中与
OrderHeader
表相关的每个记录的
StatusFK

因此,如果
Detail
表中
StatusFK=2
中的所有相关记录,那么我希望在查询中显示这些记录,因为我将对
OrderHeader
记录运行更新,以将其
状态更改为received

但是假设detail表中有6条记录与
OrderHeader
表相关,但6条记录中只有5条记录具有
StatusFK=2
,那么我不想显示它,因为它还没有准备好被归类为完全接收


我希望有人能理解我说的话,并希望能帮助我实现这一目标

在SQL中,诀窍是在LEFT JOIN中查询未收到状态的订单详细信息,并测试不存在不需要状态的行

由于不知道您的MS Access版本,我无法保证确切的语法,但是类似于下面的查询应该可以做到这一点

SELECT OrderHeader.*, OrderDetail.* FROM OrderDetail
JOIN OrderHeader ON HeaderFK = HeaderID
LEFT JOIN OrderDetail AS OrderDetailNotReceived ON OrderDetailNotReceived.HeaderFK = HeaderID AND OrderDetailNotReceived.StatusFK < 2
WHERE OrderDetailNotReceived.DetailID IS NULL;
从OrderDetail中选择OrderHeader.*、OrderDetail.*
在HeaderFK=HeaderID上加入OrderHeader
在OrderDetailNotReceived.HeaderFK=HeaderID和OrderDetailNotReceived.StatusFK上以OrderDetailNotReceived的形式左连接OrderDetail
其中OrderDetailNotReceived.DetailID为空;

在SQL中,诀窍是在“左联接”中查询未收到状态的订单详细信息,并测试不存在不需要状态的行

由于不知道您的MS Access版本,我无法保证确切的语法,但是类似于下面的查询应该可以做到这一点

SELECT OrderHeader.*, OrderDetail.* FROM OrderDetail
JOIN OrderHeader ON HeaderFK = HeaderID
LEFT JOIN OrderDetail AS OrderDetailNotReceived ON OrderDetailNotReceived.HeaderFK = HeaderID AND OrderDetailNotReceived.StatusFK < 2
WHERE OrderDetailNotReceived.DetailID IS NULL;
从OrderDetail中选择OrderHeader.*、OrderDetail.*
在HeaderFK=HeaderID上加入OrderHeader
在OrderDetailNotReceived.HeaderFK=HeaderID和OrderDetailNotReceived.StatusFK上以OrderDetailNotReceived的形式左连接OrderDetail
其中OrderDetailNotReceived.DetailID为空;

在SQL中,诀窍是在“左联接”中查询未收到状态的订单详细信息,并测试不存在不需要状态的行

由于不知道您的MS Access版本,我无法保证确切的语法,但是类似于下面的查询应该可以做到这一点

SELECT OrderHeader.*, OrderDetail.* FROM OrderDetail
JOIN OrderHeader ON HeaderFK = HeaderID
LEFT JOIN OrderDetail AS OrderDetailNotReceived ON OrderDetailNotReceived.HeaderFK = HeaderID AND OrderDetailNotReceived.StatusFK < 2
WHERE OrderDetailNotReceived.DetailID IS NULL;
从OrderDetail中选择OrderHeader.*、OrderDetail.*
在HeaderFK=HeaderID上加入OrderHeader
在OrderDetailNotReceived.HeaderFK=HeaderID和OrderDetailNotReceived.StatusFK上以OrderDetailNotReceived的形式左连接OrderDetail
其中OrderDetailNotReceived.DetailID为空;

在SQL中,诀窍是在“左联接”中查询未收到状态的订单详细信息,并测试不存在不需要状态的行

由于不知道您的MS Access版本,我无法保证确切的语法,但是类似于下面的查询应该可以做到这一点

SELECT OrderHeader.*, OrderDetail.* FROM OrderDetail
JOIN OrderHeader ON HeaderFK = HeaderID
LEFT JOIN OrderDetail AS OrderDetailNotReceived ON OrderDetailNotReceived.HeaderFK = HeaderID AND OrderDetailNotReceived.StatusFK < 2
WHERE OrderDetailNotReceived.DetailID IS NULL;
从OrderDetail中选择OrderHeader.*、OrderDetail.*
在HeaderFK=HeaderID上加入OrderHeader
在OrderDetailNotReceived.HeaderFK=HeaderID和OrderDetailNotReceived.StatusFK上以OrderDetailNotReceived的形式左连接OrderDetail
其中OrderDetailNotReceived.DetailID为空;

如果我理解正确,您只需要OrderHeader,其中订单详细信息记录的计数等于状态fk为2的OrderDetails的计数

您可以使用SUM/IIF并将其与HAVING子句中的详细记录计数进行比较

SELECT OrderHeader.OrderID, OrderHeader.Name
FROM OrderHeader 
     INNER JOIN OrderDetail
     ON OrderHeader.OrderId = OrderDetail.OrderId
GROUP BY OrderHeader.OrderID, OrderHeader.Name
HAVING 
      Count(OrderDetail.OrderId )   = SUM(IiF (OrderDetail.StatusFK = 2 ,1,0) ) 

如果我理解正确,您只需要OrderHeader,其中order detail记录的计数等于statusFK为2的OrderDetails的计数

您可以使用SUM/IIF并将其与HAVING子句中的详细记录计数进行比较

SELECT OrderHeader.OrderID, OrderHeader.Name
FROM OrderHeader 
     INNER JOIN OrderDetail
     ON OrderHeader.OrderId = OrderDetail.OrderId
GROUP BY OrderHeader.OrderID, OrderHeader.Name
HAVING 
      Count(OrderDetail.OrderId )   = SUM(IiF (OrderDetail.StatusFK = 2 ,1,0) ) 

如果我理解正确,您只需要OrderHeader,其中order detail记录的计数等于statusFK为2的OrderDetails的计数

您可以使用SUM/IIF并将其与HAVING子句中的详细记录计数进行比较

SELECT OrderHeader.OrderID, OrderHeader.Name
FROM OrderHeader 
     INNER JOIN OrderDetail
     ON OrderHeader.OrderId = OrderDetail.OrderId
GROUP BY OrderHeader.OrderID, OrderHeader.Name
HAVING 
      Count(OrderDetail.OrderId )   = SUM(IiF (OrderDetail.StatusFK = 2 ,1,0) ) 

如果我理解正确,您只需要OrderHeader,其中order detail记录的计数等于statusFK为2的OrderDetails的计数

您可以使用SUM/IIF并将其与HAVING子句中的详细记录计数进行比较

SELECT OrderHeader.OrderID, OrderHeader.Name
FROM OrderHeader 
     INNER JOIN OrderDetail
     ON OrderHeader.OrderId = OrderDetail.OrderId
GROUP BY OrderHeader.OrderID, OrderHeader.Name
HAVING 
      Count(OrderDetail.OrderId )   = SUM(IiF (OrderDetail.StatusFK = 2 ,1,0) ) 

感谢您的帮助这是我完成的查询,看起来它正在发挥作用,我只需要将它合并到我的更新查询中

SELECT tblOrder.OrderPK
  FROM tblOrder 
   INNER JOIN tblOrderDetail
    ON tblOrder.OrderPK = tblOrderDetail.OrderFK
GROUP BY tblOrder.OrderPK
  HAVING 
   Count(tblOrderDetail.OrderFK )   = SUM(IiF (tblOrderDetail.StatusFK = 2 ,1,0) )

感谢您的帮助这是我完成的查询,看起来它正在发挥作用,我只需要将它合并到我的更新查询中

SELECT tblOrder.OrderPK
  FROM tblOrder 
   INNER JOIN tblOrderDetail
    ON tblOrder.OrderPK = tblOrderDetail.OrderFK
GROUP BY tblOrder.OrderPK
  HAVING 
   Count(tblOrderDetail.OrderFK )   = SUM(IiF (tblOrderDetail.StatusFK = 2 ,1,0) )

感谢您的帮助这是我完成的查询,看起来它正在发挥作用,我只需要将它合并到我的更新查询中

SELECT tblOrder.OrderPK
  FROM tblOrder 
   INNER JOIN tblOrderDetail
    ON tblOrder.OrderPK = tblOrderDetail.OrderFK
GROUP BY tblOrder.OrderPK
  HAVING 
   Count(tblOrderDetail.OrderFK )   = SUM(IiF (tblOrderDetail.StatusFK = 2 ,1,0) )

感谢您的帮助这是我完成的查询,看起来它正在发挥作用,我只需要将它合并到我的更新查询中

SELECT tblOrder.OrderPK
  FROM tblOrder 
   INNER JOIN tblOrderDetail
    ON tblOrder.OrderPK = tblOrderDetail.OrderFK
GROUP BY tblOrder.OrderPK
  HAVING 
   Count(tblOrderDetail.OrderFK )   = SUM(IiF (tblOrderDetail.StatusFK = 2 ,1,0) )

我刚刚意识到我上面的查询是只读的,因为它包含总计,我需要能够将它链接到一个可更新的查询中

有没有一个简单的方法来解决这个问题


谢谢

我刚刚意识到我上面的查询是只读的,因为它包含总计,我需要能够将它链接到一个可更新的查询中

有没有一个简单的方法来解决这个问题


谢谢

我刚刚意识到我上面的查询是只读的,因为它包含总计,我需要能够将它链接到一个可更新的查询中

有没有一个简单的方法来解决这个问题


谢谢

我刚刚意识到我上面的查询是只读的,因为它包含总计,我需要能够将它链接到一个可更新的查询中

有没有一个简单的方法来解决这个问题

谢谢