我有一个我不明白的问题;为什么色谱柱不能使用?这是我的代码:
SELECT `a`.`id`, `a`.`title`, `e`.`url` as category,
calc_val(`a`.`value`, `c`.`prof`, `c`.`tax`) as general,
`a`.`date`, `a`.`url`,
SUM(`d`.`stock`) as stock
FROM (`produc` as a)
LEFT JOIN `prod_c` as b ON `a`.`id` = `b`.`p_id`
LEFT JOIN `p_calc` as c ON `a`.`id` = `c`.`p_id`
LEFT JOIN `p_opt` as d ON `a`.`id` = `d`.`p_id`
LEFT JOIN `categ` as e ON `b`.`categ_id` = `e`.`id`
LEFT JOIN `prod_aval` as `f` ON `a`.`id` = `f`.`p_id`
WHERE `b`.`categ_id` = '1'
AND `a`.`active` = 'y'
AND `d`.`stock` >= 1
AND general BETWEEN '10' AND '50'
GROUP BY `a`.`id`
LIMIT 9
calc_val = routine:
begin
declare value real;
set value = v+(v*l/100);
return value+(value*i/100);
end
最佳答案
别名不能在 WHERE 子句中使用,因此您需要包含计算:
AND calc_val(`a`.`value`, `c`.`prof`, `c`.`tax`) BETWEEN '10' AND '50'
或者,您可以使用派生表并向其应用部分或全部 WHERE 子句。如果计算成本高昂/复杂/处理器密集型,这可能很有用。
SELECT * FROM (
SELECT `a`.`id`, `a`.`title`, `e`.`url` as category,
calc_val(`a`.`value`, `c`.`prof`, `c`.`tax`) as general,
`a`.`date`, `a`.`url`,
SUM(`d`.`stock`) as stock
FROM (`produc` as a)
LEFT JOIN `prod_c` as b ON `a`.`id` = `b`.`p_id`
LEFT JOIN `p_calc` as c ON `a`.`id` = `c`.`p_id`
LEFT JOIN `p_opt` as d ON `a`.`id` = `d`.`p_id`
LEFT JOIN `categ` as e ON `b`.`categ_id` = `e`.`id`
LEFT JOIN `prod_aval` as `f` ON `a`.`id` = `f`.`p_id`
WHERE `b`.`categ_id` = '1'
AND `a`.`active` = 'y'
AND `d`.`stock` >= 1
GROUP BY `a`.`id`
LIMIT 9
)
WHERE general BETWEEN '10' AND '50'
关于mysql - #1054 - 'general' 中的未知列 'where clause',我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16989517/