【问题标题】:merging two queries together via mysql通过mysql将两个查询合并在一起
【发布时间】:2015-11-17 03:20:06
【问题描述】:

我想将两个查询合并在一起,但我不知道怎么做!

第一个查询:

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

这个表的结果是这样的:

当第二个查询中有 COUNT(action.service_provider_id) 时,我有 COUNT(action.service_provider_id)

合并这两个表后,结果应该是这样的:

我用油漆做了这个:p:D

用过的表

桌位:

行动:

关系:

job_list:

sasha 试过这个:

【问题讨论】:

    标签: mysql


    【解决方案1】:

    两个查询的结果可以这样组合:

    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;
    

    使用子查询可以避免使用临时表,但是如果子查询结果中缺少join key,结果集很大的话会遇到问题。

    【讨论】:

    • 这不是真的。这种方式在第一个查询之后打印第二个查询,不合并
    • 抱歉 - 我在第一次阅读时没有完全得到您想要的,请参阅我更新的解决方案。
    • sasha 我有这个错误:#1054 - '字段列表'中的未知列'tablesite.name'
    • 我添加了您的代码图片。这不是真的 :( 见帖子结尾
    • 查看我的编辑 - 我将 job_name 添加到 group by 列表中。您可以在一个查询中执行此操作,但如果结果集很大,它会比两个查询慢得多。 MySQL 在为子查询结果连接创建键方面做得不好,所以最好用临时表手动完成。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-01-23
    • 1970-01-01
    • 2018-08-07
    • 2019-04-30
    • 1970-01-01
    相关资源
    最近更新 更多