我有一张成分表:
ing_id, ing_name
1 , ing1
...
一张食谱表:
rec_id, rec_name
1 , rec1
...
和显示两者之间联系的表格:
id, ing_id, rec_id
1, 1, 1
2, 1, 2
3, 2, 1
4, 3, 3
...
如何找到同一食谱中最常见的成分?
答案 0 :(得分:2)
您可以使用自我联接和group by
:
select c1.ing_id, c2.ing_id, count(*)
from connections c1 join
connections c2
on c1.rec_id = c2.rec_id and c1.ing_id < c2.ing_id
group by c1.ing_id, c2.ing_id
order by count(*) desc;
如果您实际上想要的是名称而不是ID,则还需要两个联接才能将它们引入。