这可能是一个非常基本的事情,但是我不能完全开始工作,我找不到一个完全符合我要求的例子。说我有三张桌子:
animals: id, name, description
foods: id, name, description
animals_foods: animal_id, food_id
所以我是一个新的动物园管理员,我想知道所有动物会吃什么样的食物。我希望看到这样的输出:
+--------+------------------------+
| animal | foods |
+--------+------------------------+
| lion | beef,chicken,lamb |
| hippo | apples,hay,lettuce |
| monkey | apples,bananas.carrots |
+--------+------------------------+
答案 0 :(得分:1)
将这些桌子连在一起并由动物分组。 group_concat
可以为每个组合列出一个列表
select a.name as animal_name, group_concat(f.name) as foods
from animals a
left join animal_foods af on af.animal_id = a.id
left join foods f on af.food_id = f.id
group by a.name
答案 1 :(得分:-1)
我为动物和食物使用两张单独的桌子,然后是一张名为animals_foods的桌子,让我可以将动物映射到特定食物。
动物
1 - 狮子
2 - 河马
3 - 猴子
食品
1 - 牛肉
2 - 鸡肉
3 - 羊肉
4 - 苹果
5 - Hay
6 - 生菜
7 - 香蕉
8 - 胡萝卜
然后,animals_foods表将动物ID与每行相应的食物ID相应地映射。 (共9个)。
然后做
SELECT * from animals a LEFT JOIN animals_foods af ON a.animal_ID = af.animal_ID LEFT JOIN foods f ON af.food_ID = f.food_ID