2011-08-03 94 views
1

我覺得我與數據庫的問題從不知道正確的術語來幫助我找到答案自己,所以我會解釋我在做什麼仿製莖,希望你可以點一些教程我的方式或者給我一些條款入住。MySQL關係數據庫查詢,正確的術語?

讓我們用一個員工目錄的例子。

每個員工都可以有多個位置,從一個單獨的表拉身兼數職。示例表&一些數據,我們只關注多個位置。

員工
主要員工數據
- ID(例如:400)
- 第一(如:約翰)
- 最後的(例如:DOE)

位置
獨特的位置列表
- ID(例如:3000)
- 標題(例如:FakeCo,LLC)

map_employees_locations
鐵的位置的任何數量的僱員
- 編號
- EMPLOYEE_ID(例如:400)
- LOCATION_ID(前:3000)

我正在努力處理單個查詢的邏輯wou LD返回是這樣的:

約翰
李四
FakeCo,LLC
AnotherCo,LLC

看來我必須要運行一個查詢來獲取僱員數據,然後嵌套查詢中,抓鬥與員工ID等相關......如果有每名僱員只有一個位置的位置,這將是一個簡單的加入,我只是不知道如何處理的倍數。

讓我知道如果我的路要走,我只是掙扎。

+0

搜索條件將是MySQL'Pivot' Data – Chandu

回答

1

你會參加所有的表這樣在一起

select e.id,e.first,e.last,l.id,l.title 
from employees e 
inner join map_employees_locations el 
on el.employee_id = e.id 
inner join locations l 
on el.location_id = l.id 
where e.first = 'John' 
AND e.last = 'Doe' 

這將返回的數據是這樣的:

e.id e.first e.last l.id l.title 
------------------------------------------------ 
1  John  Doe  1  FakeCo, LLC 
1  John  Doe  2  AnotherCo, LLC 
0

如果你只想要每名員工的一條線,你也許應該使用組concat

select id, e.last, e.first 
    group_concat(l.title separator ',') as locations 
from employee e 
join location l on l.employee_id = e.id 
group by e.id 

不知道語法因爲我更瞭解postgres,但是這應該可以完成這項工作。

+0

我似乎無法得到正確的代碼格式,但這裏是我一起蹣跚而行,它似乎工作得益於group_concat提示:http://pastie.org/ 2316589 –