2014-09-10 126 views
1

我有一個數據庫,允許用戶有多個電子郵件地址。我想查詢數據庫以獲取該客戶的所有工作實例。每項工作都會返回兩次,每次都有一封電子郵件。MySQL LIMIT結果與INNER JOIN超過2個表

這裏是我的查詢:

SELECT customers.first_name, customers.last_name, emails.email, services.title, services.description, jobs.status, jobs.job_id 
FROM customers 

INNER JOIN emails ON customers.user_id=emails.user_id 
INNER JOIN jobs ON customers.user_id=jobs.customer_id 
INNER JOIN services ON jobs.service_id=services.service_id; 

它返回是這樣的:

database

我想,只有第一個電子郵件返回結果。該行不應該重複用戶已存檔的每個電子郵件地址。

這怎麼辦?

+0

提供您的表格定義和一些示例數據集以測試 – 2014-09-10 18:12:15

+0

要做什麼最好的方法是什麼? – 2014-09-10 18:17:10

+0

看看@ [* sql小提琴*](http://sqlfiddle.com/)將您的表模式和示例數據設置在這裏 – 2014-09-10 18:19:44

回答

3

您可以使用SQL上的GROUP BY來獲得如下所示的唯一列值。

SELECT customers.first_name, customers.last_name, emails.email, services.title, services.description, jobs.status 
FROM customers 

INNER JOIN emails ON customers.user_id=emails.user_id 
INNER JOIN jobs ON customers.user_id=jobs.customer_id 
INNER JOIN services ON jobs.service_id=services.service_id; 

GROUP BY jobs.job_id; 
+0

這將返回同一作業的兩個電子郵件地址,我希望兩個作業都使用相同的電子郵件地址。 – 2014-09-10 18:10:48

+1

然後嘗試組內的'jobs.status'。我也編輯答案。 – sugunan 2014-09-10 18:13:04

+2

如果我有多個具有相同狀態的工作,那麼我不會返回正確的結果。 – 2014-09-10 18:15:11