我正在创建一个CPM,我正在尝试获取所有未按计划进行的CPM。我下面有以下代码,并将公式放在WHERE子句中,但是它显示了所有结果。不仅是结果小于0.9。
SELECT cpms.*, site_images.*
FROM ( cpm_images
INNER JOIN site_images ON ( cpm_images.site_image_id = site_images.site_image_id ) )
INNER JOIN cpms
ON
( cpms.cpm_id = cpm_images.cpm_id )
WHERE (
( cpms.cpm_views_count * ( $data - cpms.cpm_date_start ) ) /
( cpms.cpm_views_total * (cpms.cpm_date_end - $data ) )
) < 0.9
无论计算出多少数字,它都会显示所有结果。如果数字小于0.9,则显示;如果数字大于0.9,则显示。
更新: 以下数据是从数据库中提取的。
This is the data from the table.
[cpm_id] => 1
[cpm_title] => Ad Special
[cpm_date_start] => 1556746806
[cpm_date_end] => 1559425206
[cpm_views_total] => 1000
[cpm_views_count] => 500
[cpm_image] =>
[cpm_active] => 1
[site_image_id] => 137
[site_image_file] => cars/3.jpg
[site_image_file_tn] => cars/3.jpg
[site_image_file_org] => cars/3.jpg
[site_image_title] =>
[site_image_description] =>
[site_image_upload_date] => 0
当我将数字代替表格行名称时 (500 *(1557665447-1559425206)) / (1000 *(1556746806-1557665447))
它有效,因此表行名称可能没有显示为int。表格如下
`cpm_id` int(11) UNSIGNED NOT NULL,
`cpm_title` varchar(255) NOT NULL,
`cpm_date_start` int(11) NOT NULL,
`cpm_date_end` int(11) NOT NULL,
`cpm_views_total` int(11) NOT NULL,
`cpm_views_count` int(11) NOT NULL,
`cpm_image` varchar(255) DEFAULT NULL,
`cpm_active` int(1) DEFAULT NULL
如果我有电话号码
( 0 * ( 1557665447 - 1559425206 ) ) / ( 1000 * ( 1556746806 - 1557665447 ) )
等于0,因此显示为低于0.9 但是如果我有以下要求
( 1000 * ( 1557665447 - 1559425206 ) ) / ( 1000 * ( 1556746806 - 1557665447 ) )
等于结果中显示的1.91561121265,但不应小于0.9,而不应该显示
更新: 如果我使用以下
WHERE ( ( cpms.cpm_views_count * ( 1557665447 - 1559425206 ) ) / ( cpms.cpm_views_total * ( 1556746806 - 1557665447 ) ) ) < 0.9
它有效,并且以下内容也可以
WHERE ( ( cpms.cpm_views_count * ( $date - 1559425206 ) ) / ( cpms.cpm_views_total * ( 1556746806 - $date ) ) ) < 0.9
但是一旦我将其更改为
WHERE ( ( cpms.cpm_views_count * ( $date - cpms.cpm_date_start ) ) / ( cpms.cpm_views_total * ( cpms.cpm_date_end - $date ) ) ) < 0.9
它不起作用,我什至尝试将括号放在cpms.cpm_date_end和cpms.cpm_date_start上,但仍然失败。
答案 0 :(得分:0)
我发现了问题,我的cpm_views_start和cpm_views_end方向错误
( ( cpms.cpm_views_count * ( $date - cpms.cpm_date_end ) ) / ( cpms.cpm_views_total * ( cpms.cpm_date_start - $date) ) )
当我按如下所述放入时,我是怎么意识到的
SELECT ( ( cpms.cpm_views_count * ( $date - cpms.cpm_date_end ) ) / ( cpms.cpm_views_total * ( cpms.cpm_date_start - $date) ) ) AS sum_2
它返回了另一个数字。我意识到在编码字符串的过程中,我改变了cpm_date_end和cpm_date_start的位置,但是在屏幕上进行测试的地方,这是正确的方式,因此屏幕上的数据是正确的,但是当它在查询,这是错误的方法。
感谢#nick竭尽所能帮助我。