2014-05-23 35 views
0

我不确定我需要什么类型的JOIN。我有一个表是peoplepeople表具有id,lastname,firstname,title,departmentidphone。 第二个表格是departmentdepartment表具有id,name,roomidtelephone。 第三张表是peopleroomspeoplerooms只有peopleidroomid字段。 第四张表是roomsrooms具有id,nameroomnumberOracle在3个表格上加入2-3个查找

的目标是查询people和(使用departmentiddepartment表)返回people.idlastnamefirstnametitlename,也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 

回答

2

你是正确的道路上。请加入department。尝试以下查询。我已经添加people.idroom.name,因为你在你的问题中提到它:

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

它返回象3分的结果,而不是30的结果是每个部门之一。它以我不需要的方式限制它。 – donlaur

+0

有没有部门的房间?更具体地说:每个房间都有'room'的'department'条目吗? –

+0

部门有房间和人有房间。在这个电话会议上,我更关心的是我可以得到每个人的部门名称。 – donlaur