我不确定我需要什么类型的JOIN。我有一个表是people
。 people
表具有id
,lastname
,firstname
,title
,departmentid
和phone
。 第二个表格是department
。 department
表具有id
,name
,roomid
和telephone
。 第三张表是peoplerooms
。 peoplerooms
只有peopleid
和roomid
字段。 第四张表是rooms
。 rooms
具有id
,name
和roomnumber
。Oracle在3个表格上加入2-3个查找
的目标是查询people
和(使用departmentid
从department
表)返回people.id
,lastname
,firstname
,title
,name
,也room.name
使用peoplerooms
找到所有房间的peopleid
了。
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
我有以下SQL工作,但我不是在部门名称拉......我只得到people.departmentid,我需要查找部门,而是让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
它返回象3分的结果,而不是30的结果是每个部门之一。它以我不需要的方式限制它。 – donlaur
有没有部门的房间?更具体地说:每个房间都有'room'的'department'条目吗? –
部门有房间和人有房间。在这个电话会议上,我更关心的是我可以得到每个人的部门名称。 – donlaur