2015-09-09 44 views
4

這是Datagridview,我需要像這樣在屏幕上顯示。
(Datagrid的視圖與「主表」 結合(RECEIVE_PLAN)如何查詢從表A或B獲取值?

enter image description here

概念設計數據庫:

如果要導入的東西進入倉庫,你必須計劃在一天內接收。 收貨計劃直接從「採購訂單」進行 有時您的倉庫在訂購前有收貨計劃。

數據庫中有三個表,包括表A表B主表

他們有這樣的關係。

注:主表有越來越值顯示在屏幕

  1. 得到「PO_LIST_NO」「PO_NO」從一個表(採購定單表兩個選項)直接。

  2. 得到「PO_LIST_NO」「PO_NO」乙表(RECEIVE調度表),然後從表中獲取的值。
    enter image description here

重要條件

  1. 在主表(接收PLAN)必須以 「PO_ID」 或 「RS_ID」

  2. 如果主表中有值( RECEIVE PLAN)在PO_ID列有一個值,RS_ID列必須爲NULL。 在另一方面,如果主表(RECEIVE PLAN)具有 RS_ID列中的值,PO_ID列必須是NULL

  3. 主表(RECEIVE PLAN)必須不是NULL既PO_ID和RS_ID
  4. 主表(接收PLAN)在PO_ID和RS_ID都不能有一個值

RECEIVE PLAN的例子如下所示。

enter image description here

(PO_TRAN_ID)是PO_ID

(RS_TRAN_ID)是RS_ID在這種情況下。

問題:如何查詢從表A或B獲取價值?

如何將主表像這些顯示器的乙表之間加入。

enter image description here

這datagridview的屬性。

的BindingSource:主表(RECEIVE_PLAN)

「PO LIST NO」 列:從A表中獲取(PURCHASE_ORDER)

「PO NO」 列:從A表中獲取( PURCHASE_ORDER)

「規劃數量」 欄:從主表中獲取(接收PLAN)

+1

我欣賞視覺圖和努力,但我認爲你的問題會更清楚,只需輸入和輸出純文本輸入。 –

+0

http://weblogs.sqlteam.com/jeffs/archive/2007/04/03/Conditional-Joins.aspx –

+0

@ThanapipatPacharatanakoson,請使用純文本而不是圖片。更好的是,發佈一個創建表腳本並插入語句。 –

回答

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 
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) 
) 
+0

你是一個天才!簡單有效的解決方案! –

相關問題