如何在三个表中使用join

时间:2012-05-12 10:52:46

标签: mysql

我们有三张桌子。

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并且date ='2012-05-23'并且在tblC中按seg_name排序

doc_id被引用到tblB和 在doc_id的基础上,Seg_id被引用到tblC如何在这种情况下使用join。

应该看起来像

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

2 个答案:

答案 0 :(得分: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'

答案 1 :(得分: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