어떤 유형의 JOIN이 필요한지 잘 모르겠습니다.오라클은 2-3 개의 조회가있는 3 개의 테이블을 사용합니다.
나는 하나의 표가 people
입니다. people
테이블은 id
, lastname
, firstname
, title
, departmentid
및 phone
입니다. 두 번째 테이블은 department
입니다. department
표는 id
, name
, roomid
및 telephone
입니다. 세 번째 테이블은 peoplerooms
입니다. peoplerooms
의 필드는 peopleid
및 roomid
입니다. 네 번째 테이블은 rooms
입니다. rooms
은 id
, name
및 roomnumber
입니다.
목표는 people
를 조회합니다 (departmentid
를 사용하여 department
테이블에서) people.id
, lastname
, firstname
, title
, name
반환하는 것입니다, 또한 room.name
peopleid
는이 모든 객실을 찾을 수 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
결과는 각 부서의 하나입니다. 그것은 내가 필요가없는 방식으로 그것을 제한하고 있습니다. – donlaur
부서가없는 방이 있습니까? 더 구체적으로 말하자면, 모든 방이'department.'에'room.id'라는 항목을 가지고 있습니까? –
부서에는 방이 있고 사람들에게는 방이 있습니다. 이 부름에서 저는 각 사람의 출발 이름을 얻을 수 있다고 더 염려합니다. – donlaur