【发布时间】:2016-12-13 12:21:14
【问题描述】:
我需要构建一个包含多个 JOIN 的查询,更具体地说,是 2 个 JOIN,但它会得到重复的结果,请检查:
我当前的表:
食品商店
id, slug, name
categories_food_shops
id, id_cat, id_food_shop
pictures_food_shops
id, pic_slug, id_food_shop
我需要从 food_shops 获取 *,从 categories_food_shops 获取 id_cat,从 pictures_food_shops 获取 pic_slug...
我目前的查询是这样的:
SELECT food_shops.id, food_shops.slug, food_shops.name,
GROUP_CONCAT(categories_food_shops.id_category) as categories,
GROUP_CONCAT(pictures_food_shops.slug) as pictures
FROM
food_shops
JOIN categories_food_shops
ON food_shops.id = categories_food_shops.id_food_shop
JOIN pictures_food_shops
ON food_shops.id = pictures_food_shops.id_food_shop
GROUP BY food_shops.slug, pictures_food_shops.id_food_shop
但由于我的 Pictures_food_shops 与 categories_food_shops 的结果更多,所以我的结果是“四倍”:
我可以做些什么来防止这种情况并只获得正确数量的类别? 第一行只有 1,第二行只有 3 和 5,最后一行只有 7,1,6?
谢谢!
【问题讨论】:
-
只是为了澄清 id_category 来自哪里?我在上面的架构中没有看到它?