gpt4 book ai didi

php - MySQL查询,计算可用资金

转载 作者:行者123 更新时间:2023-11-29 07:35:04 26 4
gpt4 key购买 nike

如果用户的帐户中有足够的资金来支付展示广告的费用,我将尝试检索广告的 ID。但我却迷失了方向,

Mysql 架构:

campaign_deposit:
c_id (campaign id), btc (amount deposited)...

ad_view:
a_id (ad id), btc (cost of impression)...

ad:
id (ad id), uv (cost of impression)...

MySQL 错误:

Unknown column 'ad.c_id' in 'where clause'

-查询:

SELECT id FROM 
(
SELECT *,
(
SELECT SUM(btc) as btc FROM
(
SELECT `btc` FROM ad_view WHERE a_id IN
(
SELECT id FROM ad WHERE c_id = ad.c_id
) OR ad_space_id IN
(
SELECT id FROM ad WHERE c_id = ad.c_id
)
UNION ALL SELECT (`btc` * -1) AS `deposit` FROM
campaign_deposit WHERE c_id=ad.c_id GROUP BY c_id
) AS Total
) AS deposit FROM ad
) AS ad
WHERE uv >= 0 AND click >= 0 AND uv < deposit AND click < deposit AND deleted=0 AND c_id IN
(
SELECT id FROM campaign WHERE publisher = 0 AND deleted=0
) LIMIT 1

最佳答案

我们需要查看您的数据库架构,以便了解这些查询是否合理。 ad 表格中有哪些列?

如果您在编写 MySQL 查询时迷失了方向,对我来说,这表明您需要将查询分解为更简单的查询。

首先,熟悉mysql的JOIN语法;它允许您使用嵌套查询执行许多操作,但以更易于阅读和更易于思考的方式构建它们。

其次,更重要的是,如果您对复杂的 MySQL 查询的作用和工作方式没有绝对的信心,我认为您不应该将复杂的 MySQL 查询放入生产代码中。您使用的是 PHP,因此一次运行一个查询、将结果收集到变量中并在后续查询中使用这些变量应该很容易。这样您就不必为一个巨大的整体查询进行故障排除;相反,您可以单独对SELECT id FROM ad WHERE c_id = ad.c_id进行故障排除,这将更容易找到修复程序(或在此处获取答案)。

关于php - MySQL查询,计算可用资金,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31100766/

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