2015-06-23 76 views
-1

我有這個問題,我是SQL中的新手。我有3個表:Sql內部連接有三張表

TBL_PRODUCT

prod_id, 
    prod_type, 
    prod_code, 
    prod_desc 

TBL_DOCUMENT

doc_id, 
    doc_name, 
    doc_expiry, 
    doc_term, 
    enable_amt 

TBL_DOCUMENT_GROUP

grp_id, 
    prod_type, 
    doc_type, doc_id 

對於每一個文件,也有相應的產品,一對多。我無法弄清楚的是如何顯示每個文檔的產品。先謝謝你!

我很抱歉,但我真的不知道該怎麼做,我所知道的只是SQL的基礎知識。

+0

請告訴我們你已經嘗試過。 – KRUKUSA

回答

1

基於您提供的模式,我將假定您可以找到每個文檔的所有產品,基於 1.哪個document_group文檔在 2.哪個product_type與document_group關聯 如果是這樣的話,這是你的查詢會是什麼樣的:

SELECT doc_id, prod_id 
FROM tbl_document AS td 
JOIN tbl_document_group AS tdg ON td.doc_id = tdg.doc_id 
JOIN tbl_product AS tp ON tdg.prod_type = tp.prod_type 
WHERE doc_id = 1; 

但是,上面列出的方案有點不合常規。

0

TBL_PRODUCT中的prod_id與TBL_DOCUMENT中的任何文檔都沒有關係。 您可以想到的唯一匹配項是: 給定一個文檔(來自TBL_DOCUMENT)並將它與TBL_DOCUMENT_GROUP連接起來,您可以知道它屬於哪個產品組。 但是,您永遠無法將一個文檔與一個產品進行匹配(這是此設計中缺少的)。

這是最接近你可以得到:

select a.doc_id, a.doc_name, c.prod_type --// but not prod_id...that will create a cross join 
    from TBL_DOCUMENT a 
    inner join TBL_DOCUMENT_GROUP b 
     on a.doc_id = b.doc_id 
    inner join TBL_PRODUCT c 
     on c.prod_type = b.prod_type 

即無論是TBL_DOCUMENT表缺少PROD_ID或者您需要定義一個DOC_ID和PROD_ID之間的關係的另一個表...

+0

@Olivier De Meulder ....我理解你的邏輯,但是「他」真的不明白他想要什麼..我猜你知道這個解決方案不好,他很快就會意識到:-) – SKG

+0

是啊.. 。 我贊同你 :-) –