2014-05-23 4 views
0

어떤 유형의 JOIN이 필요한지 잘 모르겠습니다.오라클은 2-3 개의 조회가있는 3 개의 테이블을 사용합니다.

나는 하나의 표가 people입니다. people 테이블은 id, lastname, firstname, title, departmentidphone입니다. 두 번째 테이블은 department입니다. department 표는 id, name, roomidtelephone입니다. 세 번째 테이블은 peoplerooms입니다. peoplerooms의 필드는 peopleidroomid입니다. 네 번째 테이블은 rooms입니다. roomsid, nameroomnumber입니다.

목표는 people를 조회합니다 (departmentid를 사용하여 department 테이블에서) people.id, lastname, firstname, title, name 반환하는 것입니다, 또한 room.namepeopleid는이 모든 객실을 찾을 수 peoplerooms를 사용하여.

people table 
- id 
- lastname 
- firstname 
- title 
- departmentid 
- phone 

sample people data 
1|smith|will|director|2|555-555-5555 
2|doe|jane|director|3|555-333-4545 

peoplerooms table 
- peopleid 
- roomid 

sample peoplerooms data 
1|10 
2|5 

rooms table 
- id 
- name 
- roomnumber 

sample rooms data 
3|Room C|100C 
5|Room B|100B 
10|Room A|100A 

department table 
- id 
- name 
- roomid 
- phone 

sample department data 
3|Radiology|5|555-454-4444 
2|Billing|3|656-555-6656 

는 내가 단지 people.departmentid을 얻고있다 ... 다음 SQL이 작동하지만 부서 이름 당기는 아니에요하고 난 부서를 조회하고 대신 department.name을 얻을 필요가있다.

SELECT people.lastname, people.firstname, people.departmentid, people.title, room.roomnumber, people.phone 
FROM room 
JOIN peopleroom ON room.id = peopleroom.roomid 
JOIN people ON peopleroom.peopleid = people.id 
ORDER BY people.lastname 

답변

2

당신이 바로 가고 있습니다. department에도 가입하십시오. 다음 쿼리를 시도하십시오. 당신이 당신의 질문에 언급 때문에, people.idroom.name을 추가 한 : 그것은 대신 (30)의 3 개 결과처럼 반환

SELECT 
    people.lastname, 
    people.firstname, 
    people.title, 
    people.phone, 

    room.roomnumber, 
    room.name AS roomname, 

    department.name AS departmentname 

FROM 
    room JOIN peopleroom ON room.id = peopleroom.roomid 
    JOIN people ON peopleroom.peopleid = people.id 
    JOIN department ON people.departmentid = department.id 

ORDER BY 
    people.lastname 
+0

결과는 각 부서의 하나입니다. 그것은 내가 필요가없는 방식으로 그것을 제한하고 있습니다. – donlaur

+0

부서가없는 방이 있습니까? 더 구체적으로 말하자면, 모든 방이'department.'에'room.id'라는 항목을 가지고 있습니까? –

+0

부서에는 방이 있고 사람들에게는 방이 있습니다. 이 부름에서 저는 각 사람의 출발 이름을 얻을 수 있다고 더 염려합니다. – donlaur

관련 문제