2012-09-19 26 views
2

我想要的是來自tbmedAssign的所有記錄,其中zoneid或區域名稱作爲參數給出。 如何爲此編寫查詢? 請幫忙。如何從多個表中獲取數據?

表名 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

medid(PK) medianame 
--------- --------- 
1   casfung 
2   inem 
3   media1 
4   tplan 
5   casfung test 

我想從tblmedAssign所有的記錄,其中醫生是屬於特定的用戶在tbluser並在tbluser用戶是屬於特定區域和區ID是作爲參數提供的?例如zoneid = 1;

我想在記錄

+0

你的解釋需要一點澄清。 – Debloper

回答

3

基本上你需要加入四個表與他們的連接柱選擇MEDIANAME了。試試這個,

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

thanx約翰這工作。我可以問幾個更復雜的查詢嗎? –

+0

@ManishMalviya肯定。如果我可以:D –

+0

john我已經更新了1個表格tblmedia我想選擇特定記錄的平均數。 –

0

通過JOIN荷蘭國際集團的三個表,是這樣的:

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')