如何连接三个表,同时从两个表中统计
问题描述:
我有三个表:域,注册和跟踪。如何连接三个表,同时从两个表中统计
我公司目前拥有的所有域的列表,并使用此查询参观人数:
SELECT sites.id, sites.domain, count(tracking.domain) as tracked FROM sites
LEFT JOIN tracking ON sites.domain = tracking.domain
GROUP BY sites.domain
ORDER BY sites.id;
现在,我也想从一个新的表名为注册等获得数(每个域)。
我就得到了,因为这:
SELECT sites.id, sites.domain, count(tracking.domain) as tracked, signers.cc FROM sites
LEFT JOIN tracking ON sites.domain = tracking.domain
LEFT JOIN (
SELECT signups.domain, count(*) as cc FROM signups
GROUP BY signups.domain
) as signers
USING (domain)
ORDER BY sites.id;
但是这似乎并不很正确。有什么建议么?
答
在这里你去:(你可以添加外部联接,只要你喜欢,我只是指出你在朝着正确的方向)
with trackingCount as
(
select sites.domain,
count(1) as tracked
from sites,
tracking
where tracking.domain = sites.domain
group by sites.domain),
signupsCount as
(
select sites.domain,
count(1) as signedUP
from sites,
signups
where signups.domain = sites.domain
group by sites.domain)
select *
from trackingCount tc,
signupsCount sc
where tc.domain = sc.domain;
给出:
domain tracked signedUP
A 4 2
B 1 4
你可以玩在这里附近:
做多重查询有什么问题吗? –
不,但我只是觉得这很容易做到,而且我在寻找一些东西。 – speg
嗯,也许我在最后只是遗漏了一个最后的GROUP BY。 – speg