2012-07-13 92 views
0

因此,我有兩個表作業和聯繫人,我試圖做一個顯示作業,顯示工作位置和技術分配的行。現在聯繫人可以是技術人員或工作地點,我希望保持這種方式,但可以根據需要進行更改。什麼是一個很好的方法來做到這一點。MYSQL查詢與來自同一表的多個小輪

什麼是添加第二where子句,將顯示location_label正道

SELECT 
    jobs.job_id, contacts.location_label, contacts.tech_label 
FROM 
    jobs 
LEFT JOIN 
    contacts ON jobs.tech_id = contacts.contact_id 

工作表

Field Type Null Key  Default  Extra 
job_id int(6) NO PRI  NULL auto_increment 
location_id  int(5) NO  NULL   
tech_id  int(5) YES   0   
creator_id varchar(9) NO  NULL  
creation timestamp NO  CURRENT_TIMESTAMP  
service_requested varchar(400) YES   NULL  
service_performed varchar(400) YES   NULL  
status_id int(5) NO  NULL  

接觸表

Field Type Null Key  Default  Extra 
contact_id int(9) NO PRI  NULL auto_increment  
location_label varchar(30)  YES   NULL  
address  varchar(20)  YES   NULL  
city varchar(15)  YES   NULL  
state varchar(2) YES   NULL  
zip  int(10)  YES   NULL  
phone int(11)  NO  NULL   
user_level int(2) YES   NULL  
first_name varchar(10)  YES   NULL  
last_name varchar(10)  YES   NULL    
type_tech tinyint(1) YES   NULL  
type_location tinyint(1) YES   NULL  
type_admin tinyint(1) YES   NULL  
tech_label varchar(20)  YES   NULL  
creator_id int(9) YES   NULL  

進出口尋找行輸出成爲 jobs.job_id,contacts.location_label,contacts.tech_labe升

contacts.location_label將是工作(jobs.location_id)的位置 contacts.tech_label將作業分配給(jobs.tech_id)科技

我發現了一些其他線程類似問題但他們沒有一個似乎正常工作 謝謝

+1

歡迎來到StackOverflow。我很不清楚你想要完成什麼......你能從每個表格發佈一些樣本數據,並從這些數據中尋找你想要的結果嗎? – 2012-07-13 00:52:00

+1

顯示您的樣品表和所需的輸出,以便我們提供幫助 – 2012-07-13 00:53:08

回答

0

您必須加入聯繫人表兩次,一個用於技術和一個用於位置。

SELECT J.job_id, 
     L.location_label, 
     T.tech_label 
    FROM jobs J 
    LEFT JOIN contacts T ON J.tech_id = T.contact_id 
    LEFT JOIN contacts L ON J.location_id = L.contact_id