Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/60.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
通过mysql将两个查询合并在一起_Mysql - Fatal编程技术网

通过mysql将两个查询合并在一起

通过mysql将两个查询合并在一起,mysql,Mysql,我想合并两个查询,但我不知道如何合并 第一个问题: SELECT tablesite.name, tablesite.family, job_list.job_name, tablesite.phone_number FROM tablesite INNER JOIN relation on tablesite.id_user=relation.user_id

我想合并两个查询,但我不知道如何合并

第一个问题:

SELECT tablesite.name,
           tablesite.family,
           job_list.job_name,
           tablesite.phone_number
           FROM  tablesite 
           INNER JOIN relation
           on tablesite.id_user=relation.user_id
           INNER JOIN job_list
           on relation.job_id=job_list.job_id 
我在这个查询中有工作




第二个问题:

SELECT tablesite.name,
       tablesite.family,
       tablesite.phone_number,
       COUNT(action.service_provider_id)
       FROM tablesite
       LEFT JOIN action
       ON tablesite.id_user=action.service_provider_id
       AND action.vote !='' AND action.customer_comment =''
       GROUP BY name, family, phone_number
此表的结果如下:

在第二次查询中计数(action.service\u provider\u id)时,我有COUNT(action.service\u provider\u id)

合并这两个表后,结果必须如下所示:

CREATE TEMPORARY TABLE t1 (KEY(name,family,phone_number)) SELECT tablesite.name,
               tablesite.family,
               job_list.job_name,
               tablesite.phone_number
               FROM  tablesite 
               INNER JOIN relation
               on tablesite.id_user=relation.user_id
               INNER JOIN job_list
               on relation.job_id=job_list.job_id;    
SELECT ts.name,
           ts.family,
           ts.phone_number,t1.job_name,
           COUNT(action.service_provider_id)
           FROM tablesite ts JOIN t1 USING(name,family,phone_number)
           LEFT JOIN action
           ON ts.id_user=action.service_provider_id
           AND action.vote !='' AND action.customer_comment =''
           GROUP BY name, family, job_name, phone_number;
我用油漆做的:p:D

旧桌子

表位:

行动:

关系:

工作清单:

萨沙试过这个:


两个查询的结果可以如下组合:

CREATE TEMPORARY TABLE t1 (KEY(name,family,phone_number)) SELECT tablesite.name,
               tablesite.family,
               job_list.job_name,
               tablesite.phone_number
               FROM  tablesite 
               INNER JOIN relation
               on tablesite.id_user=relation.user_id
               INNER JOIN job_list
               on relation.job_id=job_list.job_id;    
SELECT ts.name,
           ts.family,
           ts.phone_number,t1.job_name,
           COUNT(action.service_provider_id)
           FROM tablesite ts JOIN t1 USING(name,family,phone_number)
           LEFT JOIN action
           ON ts.id_user=action.service_provider_id
           AND action.vote !='' AND action.customer_comment =''
           GROUP BY name, family, job_name, phone_number;

可以避免使用子查询使用临时表,但如果由于子查询结果中缺少联接键而导致结果集很大,则会遇到问题。

这不是真的。这种方式在第一次查询后打印第二次查询,没有提示对不起-我在第一次读取时没有完全得到您想要的内容,请参阅我的更新解决方案。sasha我有一个错误:#1054-字段列表中的未知列“tablesite.name”我添加了您的代码图片。这不是真的:(参见postSee my edit的结尾-我将job_name添加到group by的列表中。你可以在一个查询中完成,但是如果结果集很大,它将比两个查询慢得多。MySQL在为子查询结果连接创建键方面做得不好,因此最好使用临时表手动完成。