2012-05-12 3 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 и дата = «2012-05-23» и заказ по seg_name в tblC

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' 
Смежные вопросы