php - SQL查询连接多个表

标签 php mysql yii

我需要连接 4 个表才能获得所需的报告。但我对如何编写查询感到困惑。以下是表格的示例:

客户端表

client_id  |  client_name  |  con_id
----------:|:-------------:|:-------
    1      |     ABC       |  1
    2      |     DEF       |  1
    3      |     GHI       |  2

顾问

con_id  |  con_name
-------:|:---------
   1    |    Ani
   2    |   Robby

烫发

pid  |  client_id  |  date
----:|:-----------:|:-----------
 1   |      1      |  2014-08-09
 2   |      1      |  2014-03-02
 3   |      2      |  2014-03-02 

温度

tid  |  client_id  |  date
----:|:-----------:|:-----------
 1   |     2       |  2013-02-09
 2   |     3       |  2011-03-02
 3   |     3       |  2012-04-02 

我想展示的报告的最终结果是这样的:

client_id  |  client_name  |  perm(COUNT)  |  temp(COUNT)  |  con_name
----------:|:-------------:|:-------------:|:-------------:|:---------
    1      |       ABC     |       2       |         0     |    Ani
    2      |       DEF     |       1       |         1     |    Ani
    3      |       GHI     |       0       |         2     |    Robby

我正在尝试使用 LEFT OUTER JOIN,但没有得到我想要的结果。谁能帮我弄清楚查询?

最佳答案

这是一个带有计数和分组依据的简单外连接查询,只需将您的 client 表与相关表连接起来,并只计算不同的关联

select 
c.client_id,
c.client_name,
count(distinct p.pid) perm_count,
count(distinct t.tid) temp_count,
cn.con_name
from client c
left join Consultant cn on(c.con_id = cn.con_id)
left join Perm p on(c.client_id = p.client_id)
left join `Temp` t on(c.client_id = t.client_id)
group by c.client_id 

Fiddle Demo

关于php - SQL查询连接多个表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25442334/

相关文章:

php - Yii 2.0 静态路由 404 问题

java - 在 Apache 上集成 PHP,在 Tomcat 上集成 Java

php - 清除缓存时使用umask设置权限

php - 如何在 Select 语句 laravel 5.1 中编写子查询?

mysql - 如何从第一个表中选择基于第三个表的所有内容

php - 自动递增文件名 PHP/MySQL

php - base64_encode 和序列化 php 函数参数

php - Yii2 类 yii\authclient\clients\GoogleOAuth 不存在

php - 如何使用来自谷歌的外部托管 jquery 覆盖核心 jquery 文件

javascript - 使用 Ajax 在 Gridview 更新后显示工具提示