2013-02-03 1 views
0

Clinic, DoctorClinic_has_Doctor이라는 세 개의 테이블이 있습니다.MySQL 3 테이블 조인

Clinic_has_Doctor 
+-----------+-----------------+ 
| Clinic_id | Doctor_id  | 
+-----------+-----------------+ 
것으로 예상되는 외래 키가 Clinic에 있습니다

과 :

Clinic 
+----+------------------------+ 
| id | name     | 
+----+------------------------+ 

Doctor 
+----+------------------------+ 
| id | name     | 
+----+------------------------+ 

그리고 Clinic_has_Doctor가 병원과 의사 간의 매핑을 포함하는 간단한 테이블입니다 다음과 같이 두 테이블 ClinicDoctor이 필드 idname 있다고 가정 Doctor ID. 나는 그 (것)들에 따라서 진료소의 명부 및 닥터를 얻을 필요가있다. 나는 많은 JOIN SQL 그래서 난이 나갈 수없는 명령을 수행하지 않은

+-----------+--------------+------------+--------------+ 
| Clinic_id | Clinic_name | Doctor_id | Doctor_name | 
+-----------+--------------+------------+--------------+ 

: 그래서 같은 테이블에있을 것입니다. 어떤 도움이 필요합니까?

+1

에 StackOverflow는 아니다 이 질문에 대한 적절한 장소. 우리는 당신의 코드를 작성하지 않습니다. 당신은 당신 자신의 코딩을 할 필요가있다. 왜 무언가가 예상대로 작동하지 않는 것인지 잘 모르겠다면, 당신이 기대하고있는 것에 대한 설명과 함께 그리고 모든 에러 메시지를 포함하여 실제로 무엇을하는지에 대한 코드를 게시한다. [ask advice] (http://stackoverflow.com/questions/ask-advice)를 참조하십시오. –

+0

내가 본 대부분의 질문은 다른 사람들로부터 코드를 요청하고 있습니다. 내가 아무 것도 시도하지 않았 냐고 묻는다면, 나는 가지고있다. 그러나 그것은 효과가 없었고 그에 대한 답을 얻기 위해 주어진 질문과 마찬가지로 구체적인 질문이 필요합니다. 답변을 알고 있지만 여기에 기꺼이 표시하지 않으려는 경우 언제든지 질문을 할 때와 'Google'을 통해 검색 할시기를 알기 때문에 모든 조언을 입력하지 않아도됩니다. – mavili

+0

@JohnConde 이제 응답자에게 무엇을 말할까요? – SparKot

답변

4

당신은 Doctor 테이블에 Clinic를 연결합니다 Clinic_has_Doctor를 사용하여 테이블 JOIN하기를 원할 것입니다 :

select c.id ClinicId, 
    c.name ClinicName, 
    d.id DoctorId, 
    d.name Doctor_name 
from clinic c 
inner join Clinic_has_Doctor cd 
    on c.id = cd.clinic_id 
inner join doctor d 
    on cd.Doctor_id = d.id 

는 당신이 필요로하는 경우 여기 JOIN 구문을 학습하는 데 도움이 내가 사용 좋은 visual explanation of joins

입니다 INNER JOIN은 쿼리에 모두 Clinics 및 그와 연결된 의사를 반환합니다.

select c.id ClinicId, 
    c.name ClinicName, 
    d.id DoctorId, 
    d.name Doctor_name 
from clinic c 
left join Clinic_has_Doctor cd 
    on c.id = cd.clinic_id 
left join doctor d 
    on cd.Doctor_id = d.id 
+0

왜 가입 하시겠습니까? 이것에 대한 어떤 이유 또는 제약? – Arpit

+0

@Arpit 그들은 진료소에 의사가 진료를 위해 할당 한 'Clinic_has_Doctor'조인 테이블을 가지고 있습니다. – Taryn

+0

좋습니다! 나는이 테이블을 잊어 버린다. :) – Arpit

2

이런 식으로 뭔가해야합니다 : 당신이이 LEFT JOIN 사용 후 관련된 의사가없는 경우에도 Clinics의 목록을 반환하려면

select clinic_has_doctor.clinic_id 
    , clinic.clinic_name 
    , clinic_has_doctor.doctor_id 
    , doctor.doctor_name 
from clinic_has_Doctor 
join clinic 
on  clinic.id=clinic_has_Doctor.clinic_id 
join doctor 
on  doctor.id=clinic_has_Doctor.doctor_id 
+0

쉼표를 어디에 두는 것을 배웠습니까?) o : –

+0

@JulienPalard 기억하지 마세요. 나는 대부분 독학합니다. 목록의 시작 부분에 콤마를 붙이면 (나를 위해) 변경하기가 더 쉬워집니다. 전체 줄을 삽입하거나 삭제할 수 있습니다.내 습관은 내 특유의 들여 쓰기 스타일과 같습니다. 귀하의 답변에 대해 – BellevueBob

+0

감사합니다. 그것은 효과가 있었지만, @ bluefeet의 답변을 허용 된 것으로 표시해야했다. – mavili