DBには、いくつかのテーブル、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はSUMの後のSELECTが好きではありませんが、サブクエリなしで必要なものを取得する方法がわかりません。各テーブルに重複する列名があり、JOINを正当化するためのテーブル間の相関関係はありません。
結果はPHPにキックバックされ、PHPはjQueryにJSONを送信します。
ありがとう!99%の確率で、ここで必要なものを正確に見つけることができます^ _ ^
パラメータの1つ(ただし1つのみ)がnullになる可能性があることに注意して編集しました。ユーザーは2つのピザのトッピングを選択するだけで済みますが、それより少ないものを選択することはできません。