2012-05-12 106 views
0

我們有三張表。如何使用三張表加入

tblA 

id(PK)  doc_id(fk)  mr_id(fk)  date 
-------- ----------  --------  --------- 
1    23   22    2012-05-23 
2    24   22    2012-05-23 
3    25   21    2012-05-24 
4    26   22    2012-05-24 



tblB 

doc_id(PK)  d_name   d_segId(FK) mr_id(FK) 
------------ ------------- ----------  ---------- 
    1   manish   1    12 
    23   rahul   2    22 
    24   paul    1    22 
    25   jacky   1    21 
    26   amit    2    22 



tblC 
seg_id(PK)  seg_name  seg_color   
--------  ----------  --------  
1    A_corei   red    
2    Bcorec   green   

我想是所有從TBLA記錄,其中mr_id = 22和TBLC日期= '2012-05-23' 和order by seg_name

DOC_ID是參照TBLB和 的基礎上,的doc_id,seg_id被引用到tblC如何在這種情況下使用連接。

它應該看起來像

id   doc_id  d_name  seg_color 
-------- --------- ---------  ---------- 
1   23   rahul   green 
2   24   paul   red 
+1

這可能是我的事,但我認爲你的SQL架構是錯的,如果你有雙用連接來獲取簡單的信息。 – Povylas

回答

0
SELECT 
    tblA.id, 
    tblA.doc_id, 
    tblB.d_name, 
    tblC.seg_color 
FROM 
    tblA, tblB, tblC 
WHERE 
    tblA.doc_id = tblB.doc_id 
    AND 
    tblB.d_segId = tblC.seg_id 
    AND 
    tblA.mr_id = 22 
    AND 
    tblA.date = '2012-05-23' 
ORDER BY 
    tblC.seg_name 
2

嘗試。

SELECT a.id,b.doc_id,b.d_name,c.seg_color FROM tblB b 
INNER JOIN tblA a ON b.doc_id=a.doc_id 
INNER JOIN tblC c ON b.d_segId=c.seg_id 
WHERE a.mr_id=22 
AND a.date='2012-05-23'