2012-09-19 26 views
2

내가 원하는 것은 tbmedAssign의 모든 레코드이며 zoneid 또는 zone 이름은 매개 변수로 제공됩니다. 이 질문을 작성하는 방법은 무엇입니까? 도와주세요.여러 테이블에서 데이터를 가져 오는 방법은 무엇입니까?

테이블 이름 tablzone

zone_id(PK) ZoneName 
----------- -------- 
1    east 
2    west 
3    north 
4    south 

tbluser 

usrId(PK) userzoneId(FK to tblzone) username 
-------- ------------------------- ------------ 
1   1       manish 
2   3       rahul 
3   2       ankit 
4   4       amir 
5   2       rashmi 
6   1       akash 
tbldoctor 

docId(PK) usrId(Fk to tbluser)  docname 
--------  --------------------  ------------ 
1    2      hemant 
2    2      chintu 
3    3      rahim 
4    1      salman 
5    3      kishor 
6    3      saurabh 
7    2      banti 

tblmedAssign 

transId(Pk) doctorId(FK to tbldoctor) medId(FK) dateInsert 
---------- ------------------------- ------ ----------- 
1   2       2  20/12/2012 
2   3       3  21/12/2012 
3   2       3  23/12/2012 
4   4       1  24/12/2012 

tblmedia

의사가 tbluser에와 tbluser 사용자의 특정 사용자에 속하는
medid(PK) medianame 
--------- --------- 
1   casfung 
2   inem 
3   media1 
4   tplan 
5   casfung test 

내가 tblmedAssign에서 모든 기록을 원하는가 특정 영역 및 영역에 속하는 id가 매개 변수로 제공됩니까? 예 : zoneid = 1;

은 내가

+0

귀하의 설명은 약간의 설명이 필요합니다. – Debloper

답변

3

은 기본적으로 당신이 그들의 연결 열이 네 개의 테이블을 조인하는 데 필요한 기록에 너무 MEDIANAME을 선택합니다. JOIN으로

SELECT a.*, 
     b.*, 
     c.*,   
     d.*, 
     e.* 
FROM tblmedAssign a 
     INNER JOIN tblDoctor b 
      ON a.doctorID = b.docID 
     INNER JOIN tblUser c 
      ON b.usrID = c.usrID 
     INNER JOIN tblZone d 
      ON c.userzoneID = d.zone_ID 
     INNER JOIN tblmedAssign e 
      ON e.medid = a.medid 
WHERE d.zone_id = @zone_id OR -- supply value here 
     d.zoneName = @zoneName 
+0

고마워요. 몇 가지 더 복잡한 쿼리를 요청할 수 있습니까? –

+0

@ManishMalviya. 만약 내가 할 수 : D –

+0

존 내가 1 개의 테이블 tblmedia 내가 특정 레코드의 medianame을 선택하고 싶습니다. –

0

이 같은 세 개의 테이블, 무언가를 보내고,이 시도 :

SELECT -- what you want to select 
FROM tblmedAssign ta 
LEFT JOIN tbldoctor td ON ta.doctorId = td.docId 
LEFT JOIN tbluser tu ON td.usrId = tu.usrId 
LEFT JOIN tablzone tz ON tu.userzoneId = tz.zone_Id 
WHERE tz.zone_Id = @zoneIdParam 
0
select * 
from tblmedAssign 
inner join tbldoctor on tbldoctor.docId = tblmedAssign.doctorId 
inner join tbluser on tbluser.usrId = tbldoctor.usrId 
inner join tablzone on tablzone.zone_id = tbluser.userzoneId 
where tablzone.ZoneName = 'east' 
or tablzone.zone_id = 2 
0

이 역할을해야 목적

select * 
from 
tblmedAssign, tbldoctor, tbluser, tablzone 
where 
tblmedAssign.doctorId = tbldoctor.docId and 
tbldoctor.usrId = tbluser.usrId and 
tbluser.userzoneId = tablzone.zone_id and 
(tablzone.zone_id = x or tablzone.ZoneName = 'y') 
관련 문제