Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/289.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/webpack/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php MySQL限制具有超过2个表的内部联接的结果_Php_Mysql_Sql_Database_Inner Join - Fatal编程技术网

Php MySQL限制具有超过2个表的内部联接的结果

Php MySQL限制具有超过2个表的内部联接的结果,php,mysql,sql,database,inner-join,Php,Mysql,Sql,Database,Inner Join,我有一个数据库,允许用户拥有多个电子邮件地址。我想查询数据库以获取该客户作业的所有实例。每个工作返回两次,一封邮件返回一次 我的问题是: 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_

我有一个数据库,允许用户拥有多个电子邮件地址。我想查询数据库以获取该客户作业的所有实例。每个工作返回两次,一封邮件返回一次

我的问题是:

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;
它返回类似这样的内容:

我只想在第一封邮件中返回结果。对于用户存档的每个电子邮件地址,不应重复该行


如何做到这一点?

您可以在SQL上使用
groupby
来获得唯一的列值,如下所示

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;

这将返回同一作业的两个电子邮件地址,我希望两个作业的电子邮件地址都相同。然后在group by内尝试
作业。status
。我还编辑了答案。如果我有多个具有相同状态的作业,则我不会返回正确的结果。最好将作业名称或作业id包含在“选择”列中,并将该列名称放置在“分组依据”中。好主意,
job\u id
是唯一的,因此应该可以工作。如果我想列出另一个(在本例中是第二个)电子邮件地址,我该怎么做?提供您的表定义和一些示例数据集以测试什么是最好的方法?请查看@put your tables schema和示例数据集