2013-03-26 177 views
1

我正在使用SQL,需要选择IDR以及该IDR中有多少成分的计数。从两个不同的表中选择数据

我该怎么做呢?

  • 配方=(idR, recipeTitle, prepText, cuisineType, mealType
  • 成分=(idI, ingrDesc
  • RecipIngr =(idR*, idI*

这是我已经试过

SELECT 
    RECIPE.idR 
FROM 
    (SELECT COUNT(*) 
    FROM INGREDIENT 
    GROUP BY INGREDIENT.idI 
    ORDER BY idI.id DESC) 

但我我只想要计算每个IDR中有多少种成分。

任何帮助?

回答

2

如果我理解你的模式,

SELECT idR, count(*) 
FROM RecipIngr 
GROUP BY idR 
0

仅使用关联表,如果你只在IDR

SELECT iDR, COUNT(*) totalIngredients 
FROM RecipIngr 
GROUP BY iDR 

感兴趣,但如果你想获得TITLE

SELECT a.iDR, a.Title, 
     COUNT(*) totalIngredients 
FROM Recipe a 
     INNER JOIN RecipIngr b 
      ON a.idr = b.idr 
GROUP BY a.iDR, a.Title 

为了进一步获得更多的知识有关加入,请访问链接如下:

0
SELECT RG.IDR, COUNT(RG.IDR) 
FROM Recipingr RG 
GROUP BY RG.IDR 
0

RecipIngr是一个显示你需要为每个IDR配料表?该代码将是

SELECT idR, count(*) 
FROM RecipIngr 
GROUP BY idR 

编辑:我刚才误解了,但是这应该现在的工作

0

如果我理解你的查询,你可以试试这个:

select recipe.idr, count(ingredient.idi) 
from ingredient, recipe, recipingr 
where ingredient.idr=recipingr.idr 
and recipingr.idi=ingredient.idi 
group by recipe.idr 
0
SELECT *,INGREDIENT.INGREDIENT_Count 
FROM RECIPE INNER JOIN (SELECT idR,COUNT(*) INGREDIENT_Count 
         FROM RecipIngr 
         GROUP BY idR) INGREDIENT ON INGREDIENT.idR RECIPE.idR 

使用此查询你可以获得每个食谱的成分计数。