2013-07-23 66 views
1

我有3個表。mysql - 在一對多關係中顯示不需要的重複結果

首先是公司表:Company_ID, Company_name

第二是喬布斯表:JOB_ID, Job_Name, Job_description

第三是Comp_Jobs表:Comp_Job_ID, Company_ID, Job_ID

我想運行一個查詢創建一個連接用這些表格來顯示所有與公司相關的工作。例如,我爲要顯示的公司1獲得了2個工作。但當我運行此查詢:

Select Company.Company_name, Jobs.Job_ID, Company.CAddress, 
Jobs.Job_Name, Jobs.Job_Description from Company, jobs 
join company_job where Company.Company_ID = Company_Job.Company_ID 
order by Company_job.Job_ID; 

它會重複的結果,因爲在公司1將顯示作業1和2兩次。

任何tekkers?

+1

你可以使用'GROUP BY'在工作名稱 – Novocaine

+0

嘗試你的小組,但在工作表中會有數據冗餘的升技,因爲對於不同的公司來說,「修復」是不同的價格。但感謝您輸入 –

回答

1
Select Company.Company_name, Jobs.Job_ID, Company.CAddress, 
Jobs.Job_Name, Jobs.Job_Description 
from Company 
join company_job on Company.Company_ID = Company_Job.Company_ID 
join jobs on jobs.Job_ID = Company_Job.job_id 
order by Company_job.Job_ID; 

試試這個。不知道這是你問什麼
不存在與公司沒有適當的連接條件和工作

+0

是的,那裏的票,謝謝。沒想到必須有兩個連接,假設在考慮時有意義 –

+1

@Andrew - 注意,您的原始查詢也有兩個連接。如果不指定JOIN條件,逗號就像JOIN – luksch

+0

那就對了。有加入,但不是條件 – Akhil

1

您應該使用INNER JOIN只顯示你想要的行:

SELECT Company.Company_name, Jobs.Job_ID, 
     Company.CAddress, Jobs.Job_Name, Jobs.Job_Description 
FROM Comp_Jobs 
INNER JOIN Jobs ON Jobs.Job_ID = Comp_Jobs.Job_ID 
INNER JOIN Company ON Company.Company_ID = Comp_Jobs.Company_ID  
ORDER BY Company_job.Job_ID;