2014-09-10 124 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