具有两种不同连接和计数的 MYSQL 查询

标签 mysql sql join count

我有两个单独运行良好的不同查询。第一个给了我有用的结果列 TOTALI和第二个查询列 RIMBORSATI 。因此,我需要将第一个查询与第二个查询合并,并使第一个查询的 HAVING 子句是类似 HAVING totali-rimborsati < professionisti.limite 的操作。 .

非常感谢你。

第一个查询:

SELECT professionisti.*,COUNT(contatti_acquistati_addebito.email) AS totali  
FROM professionisti
   LEFT JOIN contatti_acquistati_addebito ON
             professionisti.email = contatti_acquistati_addebito.email
           AND contatti_acquistati_addebito.DATA
               BETWEEN ('2014-05-01') AND  ('2014-05-31')
   WHERE professionisti.categoria LIKE '%0540%' AND 
         professionisti.province LIKE '%MI%'  
         AND   professionisti.addebito='1'
GROUP BY professionisti.email
HAVING totali  < professionisti.limite
ORDER BY totali ASC LIMIT 4

第二个查询:

SELECT professionisti.*,COUNT(contatti_rimborsi.email) AS rimborsati  
FROM professionisti
LEFT JOIN contatti_rimborsi ON professionisti.email = contatti_rimborsi.email AND 
            contatti_rimborsi.DATA BETWEEN ('2014-05-01') AND  ('2014-05-31')
WHERE professionisti.categoria LIKE '%0540%'
      AND professionisti.province LIKE '%MI%'  
      AND professionisti.addebito='1'
GROUP BY professionisti.email
ORDER BY totali ASC LIMIT 4

最佳答案

select sq1.*,sq2.rimborsati  
from 
(SELECT professionisti.email as email, professionisti.categoria as categoria,professionisti.province as province,professionisti.addebito as addebito, COUNT(contatti_acquistati_addebito.email) AS totali  
FROM professionisti
   LEFT JOIN contatti_acquistati_addebito ON
             professionisti.email = contatti_acquistati_addebito.email
           AND contatti_acquistati_addebito.DATA
               BETWEEN ('2014-05-01') AND  ('2014-05-31')
   WHERE professionisti.categoria LIKE '%0540%' AND 
         professionisti.province LIKE '%MI%'  
         AND   professionisti.addebito='1'
GROUP BY professionisti.email
HAVING totali  < professionisti.limite
ORDER BY totali ASC LIMIT 4) sq1,

(SELECT professionisti.email as email, professionisti.categoria as categoria,professionisti.province as province,professionisti.addebito as addebito, COUNT(contatti_rimborsi.email) AS rimborsati  
FROM professionisti
LEFT JOIN contatti_rimborsi ON professionisti.email = contatti_rimborsi.email AND 
            contatti_rimborsi.DATA BETWEEN ('2014-05-01') AND  ('2014-05-31')
WHERE professionisti.categoria LIKE '%0540%'
      AND professionisti.province LIKE '%MI%'  
      AND professionisti.addebito='1'
GROUP BY professionisti.email
ORDER BY totali ASC LIMIT 4) sq2
where sq1.email=sq2.email and totali <rimborsati 

关于具有两种不同连接和计数的 MYSQL 查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24146352/

相关文章:

mysql - 慢查询日志正在日志文件中记录更快的查询

MySQL 使列的组合唯一

sql - 如何使用文件的内容更新 sqlite3 中的单个字段?

php - Mysql 和 PHP : searching in different mysql tables

mysql - 按相似字段分组的嵌套选择查询

sql - 统计表中特定列的重复记录

具有两个连接的查询中的 mysql 聚合函数给出了意想不到的结果

MySQL 查询两次返回同一行

MySQL UPDATE 一个表,其中包含来自另一个表的多行,以使用 REGEXP 字边界更改拼写错误的单词

linux tr 命令 - 将 mysqldump 插入拆分到不同的行