我有三个不同的表,它们具有以下结构:
食物
ID | title
---+----------
1 | sandwich
2 | spaghetti
成分
ID | food_reference | type | location | bought
----+----------------+------+----------+----------
100 | 1 | ham | storeA | 11-1-2013
101 | 1 | jam | storeB | 11-1-2013
102 | 2 | tuna | storeB | 11-6-2013
标签
ID | food_reference | tag
----+----------------+-----
1000| 1 | Tag
1001| 1 | Tag2
1002| 2 | fish
并使用一个选择,我想从这三个表(标题、类型、位置、购买、标签)中获取一个特定 ID 的所有信息。我尝试过类似的东西
SELECT food.*,ingridients.*,tags.* FROM food
JOIN ingridients
ON :id=ingridients.food_reference
JOIN tags
ON :id=tags.food_reference
WHERE id=:id
但是,即使有两个匹配的行(ham 和 jam、Tag 和 Tag2),这个查询也只从 ingridients 和 tags 中返回 id=1 的一行。你能告诉我我做错了什么吗?
编辑:我尝试了 LolCoder 的解决方案,但我仍然只得到一个结果,即使在小提琴中它似乎有效。但是我尝试了:
SELECT F.*, group_concat(I.type), group_concat(I.location),
group_concat(I.bought), group_concat(T.tag)
FROM feeds F
INNER JOIN ingridients I
ON :id = I.food_reference
INNER JOIN tags T
ON :id=T.food_reference
WHERE F.id=:id
这会从所有匹配的行中找到数据,但有几次,即我得到(对于 id=1)sandwich,ham,ham,ham,jam,jam,jam,tag,tag,tag,tag2,tag2,tag2
EDIT2:魔术发生了,LolCoder 的解决方案有效,所以谢谢你:-)