gpt4 book ai didi

mysql - 我如何调整这个 3 表 MySQL 连接查询以消除包含空值列的行?

转载 作者:行者123 更新时间:2023-11-29 03:39:27 25 4
gpt4 key购买 nike

我不太确定如何最好地表达这个问题。我不一定需要一种方法来消除包含具有空值的列的行——我只需要弄清楚如何调整我的查询,以便它只为我需要的每个用户生成单行结果……这是一些有助于澄清的背景信息:

好的,所以我有 5 个表:users、local_ads(本地广告)、local_rev(本地收入报告)、nat_ads(全国广告)和 nat_rev(全国收入报告)。

每个月,用户都会提交国家收入报告和地方收入报告。当用户创建他们的月度报告时,他们将获得本地和国家报告的唯一报告 ID。 report_id 和相应的 user_id 存储在它们各自的表(local_rev 或 nat_rev)中。

然后用户向每个报告提交广告。为当月本地报告提交的本地广告存储在 local_ads 表中,对于给定用户,他们的每个广告共享相同的 report_id。国家广告也是如此。

local_rev 和 nat_rev 表中的每个广告都有一个价格和尺寸列。

我正在尝试执行一个查询,该查询将为每个用户生成本地广告总大小、本地广告数量、本地广告总价、全国广告总尺寸、全国广告数量和全国广告总价 WHERE month="x ”

这是最接近我需要的查询:

SELECT u.franchise, lr.lrr_id, CountLocId, TotalPrice, nr.nrr_id, CountNatId, TotalNMoney,     
(
TotalPrice + TotalNMoney
)TotalRev
FROM users u
LEFT JOIN local_rev lr ON u.user_id = lr.user_id
LEFT JOIN (

SELECT lrr_id, COUNT( lad_id ) CountLocId, SUM( price ) TotalPrice
FROM local_ads
GROUP BY lrr_id
)la ON lr.lrr_id = la.lrr_id
LEFT JOIN nat_rev nr ON u.user_id = nr.user_id
LEFT JOIN (

SELECT nrr_id, COUNT( nad_id ) CountNatId, SUM( tmoney ) TotalNMoney
FROM nat_ads
WHERE MONTH = 'February'
GROUP BY nrr_id
)na ON nr.nrr_id = na.nrr_id
WHERE lr.month = 'February'
ORDER BY franchise
LIMIT 0 , 30

问题是它为每个用户生成一行,每个 月而不是单个月。您可以在下面的结果中看到这一点。在结果中,没有 NULL 值的行是我想要的行。所以我只需要弄清楚如何消除具有 NULL 值的行。

userA   84  39  5200    158 NULL    NULL    NULL
userA 84 39 5200 53 NULL NULL NULL
userA 84 39 5200 182 NULL NULL NULL
userA 84 39 5200 81 5 5900 11100
userB 93 1 100 51 NULL NULL NULL
userB 93 1 100 200 NULL NULL NULL
userB 93 1 100 84 9 5742 5842

因此,我尝试使用在 Stackoverflow 以及其他来源中找到的数十个不同示例。当应用于我的特定查询时,我无法得到任何工作。我花了几个小时进行随机调整,希望得到我需要的结果,但没有运气。在这里发帖是我绝对的最后一招!

抱歉啰嗦,我只是想确保我提供了帮助解决我的问题所需的所有信息。非常感谢你的帮助。

最佳答案

na 上的 LEFT JOIN 更改为 INNER JOIN

关于mysql - 我如何调整这个 3 表 MySQL 连接查询以消除包含空值列的行?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16222298/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com