4

这是我需要在屏幕上显示的 Datagridview。
(Datagrid 视图与“主表”(RECEIVE_PLAN)绑定)

在此处输入图像描述

概念设计数据库:

如果你想把东西进口到仓库,你必须计划在一天内收货。收货计划是直接从“采购订单”制定的, 或者有时您的仓库在订购前有收货计划。

数据库有三个表,包括Table ATable BMain Table

他们有这样的关系。

注意:主表有两个选项用于获取显示到屏幕的值

  1. 直接从A 表(PURCHASE ORDER 表)获取“PO_LIST_NO”“PO_NO” 。

  2. B 表(RECEIVE SCHEDULE 表)中获取“PO_LIST_NO”“PO_NO” ,然后从 A 表中获取值。
    在此处输入图像描述

重要条件

  1. 在主表 (RECEIVE PLAN) 中必须在“PO_ID”或“RS_ID”中有一个值

  2. 如果主表 (RECEIVE PLAN) 在 PO_ID 列有值,则 RS_ID 列必须为 NULL。另一方面,如果主表(RECEIVE PLAN)在 RS_ID 列有值,PO_ID 列必须为 NULL

  3. 主表(接收计划)不能同时为 PO_ID 和 RS_ID NULL

  4. 主表(接收计划)不能在 PO_ID 和 RS_ID 处都有值

接收计划的示例如下。

在此处输入图像描述

(PO_TRAN_ID) 是 PO_ID

(RS_TRAN_ID) 在这种情况下是 RS_ID。

问题:如何查询从表 A 或 B 中获取值?

如何在主表AB 表之间加入这样的显示。

在此处输入图像描述

这个datagridview 属性。

BindingSource:主表(RECEIVE_PLAN)

“PO LIST NO”列:从 A 表中获取 (PURCHASE_ORDER)

“PO NO”列:从 A 表中获取 (PURCHASE_ORDER)

“计划数量”列:从主表获取(接收计划)

4

2 回答 2

1

像这样的东西?

SELECT A_TABLE.PO_LIST_NO, A_TABLE.PO_NO, SUM(MAIN_TABLE.PLAN_QTY) FROM A_TABLE
INNER JOIN B_TABLE ON A_TABLE.PO_ID = B_TABLE.PO_ID
INNER JOIN MAIN_TABLE ON MAIN_TABLE.PO_ID = B_TABLE.PO_ID OR MAIN_TABLE.RS_ID = B_TABLE.RS_ID
WHERE (MAIN_TABLE.RS_ID IS NOT NULL OR MAIN_TABLE.PO_ID IS NOT NULL) AND NOT (MAIN_TABLE.RS_ID IS NOT NULL AND MAIN_TABLE.PO_ID IS NOT NULL) 
GROUP BY A_TABLE.PO_LIST_NO, A_TABLE.PO_NO
于 2015-09-09T04:28:07.290 回答
1

我可以通过使用这个查询来解决它。

( SELECT   MAIN_TABLE.*,   A_TABLE.PO_LIST_NO, A_TABLE.PO_NO
  FROM          MAIN_TABLE  
                LEFT OUTER JOIN A_TABLE
                ON MAIN_TABLE.PO_ID = A_TABLE.TRAN_ID
  WHERE  (MAIN_TABLE.RS_ID IS NULL) 
)  

  UNION 


( SELECT     MAIN_TABLE.*   , A_TABLE.PO_LIST_NO , A_TABLE.PO_NO
  FROM          MAIN_TABLE  
                LEFT OUTER JOIN B_TABLE 
                ON MAIN_TABLE.RS_ID = B_TABLE .TRAN_ID
                             LEFT OUTER JOIN A_TABLE  
                             ON B_TABLE .PO_ID = A_TABLE.TRAN_ID
  WHERE      (MAIN_TABLE.PO_ID IS NULL)  
 )  
于 2015-09-10T09:29:24.810 回答