Mysql 如何从多个表中获取数据?
我想要的是tbmedAssign where zoneid或作为参数给定的区域名称中的所有记录。 如何为此编写查询? 请帮忙 表名 塔布森Mysql 如何从多个表中获取数据?,mysql,sql,Mysql,Sql,我想要的是tbmedAssign where zoneid或作为参数给定的区域名称中的所有记录。 如何为此编写查询? 请帮忙 表名 塔布森 zone_id(PK) ZoneName ----------- -------- 1 east 2 west 3 north 4 south tbluser usrId(PK) userzoneId(FK to tblzone) username
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
TBL媒体
medid(PK) medianame
--------- ---------
1 casfung
2 inem
3 media1
4 tplan
5 casfung test
我想要tblmedAssign中的所有记录,其中医生属于tbluser中的特定用户,而在tbluser中,用户属于特定区域,并且区域id作为参数提供?例如,zoneid=1
我也想在记录中选择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
通过
JOIN
ing这三个表,类似于:
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
这应该符合你的目的
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')
你的解释需要澄清一下。thanx john这是有效的。我可以问几个更复杂的问题吗?@ManishMalviya当然可以。如果可以:Djohn我又更新了1个表tblmedia我想选择特定记录的medianame。并且
tblmedia
connected在哪里?@ManishMalviya看到更新的答案:D希望它能工作。
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')