从表中选择一个有限的数字,但所有从连接表连接

时间:2018-06-03 16:32:25

标签: mysql sql

我正在研究一个SQL项目,我正在努力实现以下目标:

我有一个名为Recipes的表,一个名为Products的表,还有一个名为RecipeProducts的表。所有食谱都有自己的ID,所有产品都有自己的ID。在Recipeproducts中,存储了recipeID和ProductID以加入它们。

我已经有了以下查询:

select 
    recipeproducts.recipeID, 
    recipes.recipeName, 
    recipeproducts.productID, 
    products.productName, 
    products.quantity AS perverpakking, 
    recipeproducts.productQuantity AS nodig 
FROM 
    recipeproducts, 
    recipes, 
    products 
WHERE 
    recipeproducts.recipeID = recipes.recipeID AND
    recipeproducts.productID = products.productID

我想获得(示例编号)3 RANDOM食谱,但是所有相应的产品。

项目的其余部分基于PHP

我该怎么做?

1 个答案:

答案 0 :(得分:0)

FROM子句中学习使用带逗号的SQL是非常可悲的。您确实应该使用正确的,明确的标准 JOIN语法。

要做你想做的事,请在加入之前对食谱进行抽样:

select r.recipeID, r.recipeName, p.productID, p.productName,
       p.quantity AS perverpakking, rp.productQuantity AS nodig
FROM (SELECT r.*
      FROM recipes r
      ORDER BY rand()
      LIMIT 3
     ) r JOIN
     recipeproducts rp
     ON rp.recipeID = r.recipeID JOIN
     products p
     ON rp.productID = p.productID;

这假设所有食谱都至少有一种产品。

相关问题