我尝试在SO中搜索类似的案例,但我无法找到正确的搜索结果。我的问题是:
我有这个查询工作正常并显示很多结果(net_salary
是salary
和totaldeductions
字段之间减法的结果,它们都存储为浮点数。我可以&# 39;记住为什么,但我需要将它们存储为浮动):
SELECT name, address, city, state, zip_code, salary-totaldeductions as net_salary FROM employees WHERE state = 'CA' ORDER BY address ASC
如果我尝试修改它并添加AND net_salary > 5000
,页面/框架将变为空白:
SELECT name, address, city, state, zip_code, salary-totaldeductions as net_salary FROM employees WHERE state = 'CA' AND net_salary > 5000 ORDER BY address ASC
我尝试搜索代码失败的地方,似乎if (mysqli_stmt_prepare($stmt, $MyQuery))
失败了。第一个查询有效,net_salary
可以工作,但在第二个查询中我尝试在失败的情况下使用变量net_salary
,使用在查询中创建的变量作为条件是错误的一个问题?你能发现什么是错的吗?
答案 0 :(得分:1)
要获得结果,请尝试以下查询:
SELECT name, address, city, state, zip_code, (salary - totaldeductions) as net_salary FROM employees WHERE state = 'CA' AND (salary - totaldeductions) > 5000 ORDER BY address ASC
在这里你需要在条件的地方放置相同的条件。如果你想使用别名,那么它就不会起作用,但是使用了,但是使用了聚合列。
尝试此查询。
答案 1 :(得分:0)
由于 Set1: 0 2 4 6 8 10 12 14 16 18 20 22 24 26 28 30 32 34 36 38
Set2: 0 3 6 9 12 15 18 21 24 27 30 33 36 39 42 45 48 51 54 57
Answer: 0 6 12 18 24
是别名,我认为您需要使用net_salary
而不是HAVING
:
WHERE
将来,如果SQL调用失败,您可以查看SELECT name, address, city, state, zip_code, salary-totaldeductions as net_salary FROM employees WHERE state = 'CA' HAVING net_salary > 5000 ORDER BY address ASC
以查看出现了什么问题。