我有一个名为 Ads 的表,每个广告包含一行。
| 身份证 | 广告标题 | 广告说明 | ... |
我还有 3 个名为 Applications、Referals 和 Subscribers 的表,每个应用程序、引荐和订阅者的行都与广告相关联。
| 身份证 | 广告ID | 申请人姓名 | 申请人邮箱 | ... |
| 身份证 | 广告ID | 推荐人邮箱 | 推荐电子邮件 | ... |
| 身份证 | 广告ID | 订阅者电子邮件 | ... |
最后,我有一个名为 Views 的表,其中每个广告都有一行,其中包含该广告的总视图数。
| 身份证 | 广告ID | 意见 |
我正在尝试编写一个查询,其中包含 6 列中每个广告的摘要:广告 ID、广告标题、应用程序/推荐人/订阅者的数量和总浏览量。
对我一直使用的所有表的简单查询:
SELECT *
FROM Ads
LEFT JOIN Applications ON Ads.ID = Applications.AdID
LEFT JOIN Referrals ON Ads.ID = Referrals.AdID
LEFT JOIN Subscribers ON Ads.ID = Subscribers.AdID
LEFT JOIN Views ON Ads.ID = Views.AdID
我尝试了很多 LEFT 和 INNER 联接、GROUP BY、COUNT(...)、COUNT(DISTINCT ...) 和 SUM(CASE ...) 的组合,但到目前为止没有任何效果。我最终从以前的列中计算 NULL 值,计算条目两次或根本不计算,计算 Views 表中的行数而不是将它们加在一起等等。
将其拆分为多个查询是否更好,或者是否有一种很好的方法可以用一个查询来归档我想要的内容?