2017-03-08 13 views
1

は、私は3つのテーブルを持っている:値リストでテーブルをクエリするにはどうすればよいですか?

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

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

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

考え方は人が複数の医師を持つことができ、医師が複数の患者(人)を持つことができるということです。

私がしたいことは、人の医者のすべてをIDで取得することです。ここに私の定量前戦略です:その後、

SELECT * FROM Person_Doctor WHERE person_id=:id 

doctor_idすることにより、対応する医師への各Person_Doctorをマップします。このアプローチの問題は、Person_DoctorオブジェクトごとにDBを照会する必要があり、高価に見えることです。これを行うより良い方法はありますか?

+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

p.doctor_idがNULLではありませんpd.doctor_id = d.id にドクターD に参加p.id = pd.person_id にperson_doctorのPD に参加する人物P は異なるp.id を選択

+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 
関連する問題