4

これは、このような画面に表示する必要がある Datagridview です。
(Datagrid ビューは「メイン テーブル」(RECEIVE_PLAN)とバインドされます)

ここに画像の説明を入力

コンセプト デザイン データベース:

倉庫に何かを輸入したい場合は、1日で受け取ることを計画する必要があります. 受入計画は「発注書」から直接作成する 、発注前に倉庫に受入スケジュールがある場合があります。

データベースには、Table ATable BおよびMain Tableを含む 3 つのテーブルがあります。

このような関係にあります。

注:メイン テーブルには、画面に表示する値を取得するための 2 つのオプションがあります。

  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. メイン テーブル (RECEIVE PLAN) は、PO_ID と RS_ID の両方を NULL にすることはできません

  4. メイン テーブル (RECEIVE PLAN) は、PO_ID と RS_ID の両方に値を持っていてはなりません

以下のようなRECEIVE PLANの例。

ここに画像の説明を入力

(PO_TRAN_ID) は PO_ID

(RS_TRAN_ID) は、この場合の RS_ID です。

質問 : テーブル A または B から値を取得するためにクエリを実行する方法は?

このように表示するために、メイン テーブルAテーブル、およびB テーブルを結合する方法。

ここに画像の説明を入力

この datagridview プロパティ。

BindingSource :メイン テーブル (RECEIVE_PLAN)

「PO LIST NO」列 : A テーブルから取得 (PURCHASE_ORDER)

「PO NO」列 : A テーブルから取得 (PURCHASE_ORDER)

「PLAN QTY」列 :メインテーブルから取得 (RECEIVE PLAN)

4

2 に答える 2

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 に答える