2017-03-08 62 views
1

我有3个表:如何通过值列表查询表格?

Person 
----------- 
id 
name 
doctor_id 

Doctor 
----------- 
id 
name 

Person_Doctor 
------------- 
id 
person_id 
doctor_id 

的想法是,一个人可以有一个以上的医生,医生可以有一个以上的患者(人)。

我想要做的是通过身份证获取一个人的所有医生。这里是我的初试策略:

SELECT * FROM Person_Doctor WHERE person_id=:id 

然后doctor_id映射每个Person_Doctor到相应的医生。这种方法的事情是,我必须为每个Person_Doctor对象查询数据库,看起来很昂贵。有一个更好的方法吗?

+1

提示:'JOIN'。你知道如何使用SQL吗? –

回答

0

这是一个相当基本的JOIN,这是关系数据库的基本元素。一旦你完成了这个任务,我会建议你研究一下,或者参加数据库的大学课程。在SQL中工作时遇到的问题将比这个更难。

SELECT d.name as 'doctor name' 
FROM doctor d 
    INNER JOIN person_doctor pd on d.doctor_id = pd.doctor_id 
    INNER JOIN person ON p p.person_id = pd.person_id 
WHERE p.person_id = @id 
0

SELECT DISTINCT p.id 从人员P 上p.id = pd.person_id 上pd.doctor_id = d.id 加盟医生d WHERE p.doctor_id IS NOT NULL加入person_doctor PD

+1

请考虑格式化您的代码答案,以便更易于阅读。 – Forklift

1
Select p.name as patient, d.name as doctor 
From person as p inner join person_doctor as pd on pd.person_id = id 
       inner join doctor as d on pd.doctor_id = d.id 
where p.id = SomeID