比较两个表的数量

时间:2013-07-15 04:03:41

标签: sql pdo

我有一个设置,其中一个表列出了项目的成本。另一个表列出了剩余的项目数量。

我想要比较两个表,如果至少有一行剩下的项目小于成本,则返回false。

表示设置示例:

table for costs

//note there can be multiple ingredients per materialID
ID | materialID | IngredientID | quantity_per_one
 1 |      4     |      5       |       50

table for user's available ingredients

ID | UserID | IngredientID | quantity
 2 |    3   |       5      |   46

下面是一个示例场景:

用户购买5 x materialID: 4

这意味着它将花费他:(50 x 5) of IngredientID 5,如果上面的数据,他显然没有足够的,因此结果应该返回false或没有count()的行。

现在我的当前方法是在PHP中获取行循环并逐个检查,但是如果我可以通过SQL直接进行比较,那么我可以省去循环。

这在SQL中是否可行?

2 个答案:

答案 0 :(得分:1)

只需根据IngredientID列加入两个表:

SELECT MIN(quantity_per_one * 5 <= quantity) AS has_enough
FROM costs
INNER JOIN user_ingredients USING (IngredientID)

has_enough的值是0(成分不够)或1(所有成分都存在)。

答案 1 :(得分:0)

成分数:

SELECT count(id) FROM costs WHERE material = 4;

计算:

SELECT count(i.id) FROM costs as c, ingredients as i 
WHERE i.ingredient = c.ingredient AND i.quantity >= (c.per * 2);

如果它们相同,则用户有资格购买该材料。

SqlFiddle: http://sqlfiddle.com/#!2/5bcba/11