MySQL的功能添加多个表中的价格(MySQL Function Add prices from m

2019-09-24 06:37发布

该数据库有几个表,tblPizza,然后它的浇头,tblCheese,tblMeat和tblVeggie表。 我想写会采取VARCHAR参数,可以仰望priceFactor每个表,把它们相加,并返回小数一个MySQL的功能。 谷歌搜索,并在这里寻找之后,我拼凑这一点。 我在这里还是在谷歌找到的结果都没有试图做足够接近我想要做的是一个答案。

DELIMITER $$

CREATE FUNCTION `dbname`.`calculatePrice` (cheese VARCHAR(50), meat VARCHAR(50), veg VARCHAR(50))
RETURNS DECIMAL
BEGIN
DECLARE price DECIMAL;
SET price = SUM(SELECT priceFactor AS cheesePrice UNION ALL SELECT priceFactor AS meatPrice FROM tblMeat WHERE meatName = meat UNION ALL SELECT priceFactor AS vegPrice FROM tblVeggie WHERE veggieName = veg) FROM tblCheese WHERE cheeseName = cheese);

RETURN price;
END

MySQL不喜欢SELECT SUM后,但我不知道如何得到我想要的无子查询。 有重复的列名翻过每个表与表之间没有相关性来证明一个JOIN。

其结果将被踢回PHP,这将JSON它一起jQuery的。

谢谢! 的99%的时间,我能找到正是我需要在这里^ _ ^

编辑需要注意的是它的则params的可能(也只能一个)可以为空。 用户只需要选择两个比萨配料,但不能选择比这少。

Answer 1:

尝试这个,

SET price = 
(
    SELECT  SUM(x.Price) 
    FROM
    (
        SELECT priceFactor AS Price FROM tblCheese WHERE cheeseName = cheese
        UNION ALL 
        SELECT priceFactor AS Price FROM tblMeat WHERE meatName = meat 
        UNION ALL 
        SELECT priceFactor AS Price FROM tblVeggie WHERE veggieName = veg
    ) x
);


文章来源: MySQL Function Add prices from multiple tables
标签: mysql sum