sql – 如何查询从表A或B获取值?

这是Datagridview,我需要像这样在屏幕上显示.

(Datagrid视图与“主表”(RECEIVE_PLAN)绑定)

《sql – 如何查询从表A或B获取值?》

概念设计数据库:

如果您想将某些东西导入仓库,您必须计划在一天内接收.
收货计划直接来自“采购订单”
或者有时您的仓库在订购前有接收时间表.

数据库有三个表,包括表A和表B以及主表.

他们有这样的关系.

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

>直接从A表(PURCHASE ORDER表)中获取“PO_LIST_NO”和“PO_NO”.
>从B表(RECEIVE SCHEDULE表)获取“PO_LIST_NO”和“PO_NO”,然后从A表中获取值.
《sql – 如何查询从表A或B获取值?》

重要条件

>在主表(RECEIVE PLAN)中必须具有“PO_ID”或“RS_ID”中的值
>如果主表(RECEIVE PLAN)在PO_ID列具有值,则RS_ID列必须为NULL.
另一方面,如果主表(RECEIVE PLAN)的值为
RS_ID列,PO_ID列必须为NULL
>主表(RECEIVE PLAN)不能为PO_ID和RS_ID都为NULL
>主表(RECEIVE PLAN)的PO_ID和RS_ID都不能有值

RECEIVE PLAN的例子如下.

《sql – 如何查询从表A或B获取值?》

(PO_TRAN_ID)是PO_ID

在这种情况下,(RS_TRAN_ID)是RS_ID.

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

如何在主表,A和B表之间进行连接以进行显示.

《sql – 如何查询从表A或B获取值?》

这个datagridview属性.

BindingSource:主表(RECEIVE_PLAN)

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

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

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

最佳答案 像这样的东西?

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
点赞