我想要的是来自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/2012tblmedia
medid(PK) medianame
--------- ---------
1 casfung
2 inem
3 media1
4 tplan
5 casfung test 我想要来自tblmedAssign的所有记录,其中医生属于tbluser中的特定用户,tbluser中的用户属于特定区域,区域id作为参数提供?例如zoneid= 1;
我想在记录中也选择媒体名称
发布于 2012-09-19 17:28:32
基本上,您需要将这四个表与它们的链接列连接起来。尝尝这个,
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发布于 2012-09-19 17:30:38
通过对这三个表执行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发布于 2012-09-19 17:37:44
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 = 2https://stackoverflow.com/questions/12491909
复制相似问题