MySQL SELECT同时从多个表中查询

时间:2015-11-28 00:24:13

标签: mysql select inner-join

我的数据库中有这样的架构: enter image description here

我想显示所有食谱(带有特定字段),其中特定用户(给出了unique_id)已添加到他的收藏夹中,这些收藏夹在表格收藏夹中(2个字段 - 用户ID和喜欢的食谱)。我不知道该怎么做。

f.e。如果用户喜欢5个食谱,那么该信息将包含在收藏夹表格中(他的ID和食谱,他喜欢id)。我想显示字段:

  • 食谱。base.OnRender()
  • 食谱。unique_id
  • 食谱。title
  • 配方。img_tumbnail_link
  • 食谱。add_date
  • 食谱。kitchen_type
  • user。meal_type
  • user。name
  • COUNT(surnamelike)AS like_count

我试图用这个做一些查询:

recipe_unique_id_fk

从这样的表格中:

enter image description here

使用此查询我只收到1行而不是3行我应该为ID为SELECT recipe.`unique_id`, recipe.`title`, recipe.`img_tumbnail_link`, recipe.`add_date`, recipe.`kitchen_type`, recipe.`meal_type`, user.`name`, user.`surname`, COUNT(`like`.`recipe_unique_id_fk`) AS like_count FROM `recipe` JOIN `favourite` ON (recipe.`unique_id` = `favourite`.`recipe_unique_id_fk`) JOIN `like` ON (recipe.`unique_id` = `like`.`recipe_unique_id_fk`) JOIN `user` ON (recipe.`user_unique_id_fk` = user.`unique_id`) WHERE favourite.`user_unique_id_fk` = '565096811c0b51.08471830' ORDER BY recipe.`add_date` DESC 的用户获取。有帮助吗?谢谢。

我添加了食谱表和结果:)

enter image description here

这是我的查询结果:

enter image description here

以下是所有记录(无重复):http://postimg.org/image/ejjemnozb/

1 个答案:

答案 0 :(得分:2)

您正在使用与类似表的连接,其中只有一行这就是为什么只返回一行的原因。您可以使用子查询计算赞。我在下面提到了正确的查询:

SELECT recipe.`unique_id`, recipe.`title`, recipe.`img_tumbnail_link`, recipe.`add_date`, recipe.`kitchen_type`, recipe.`meal_type`, user.`name`, user.`surname`, 
(SELECT count(*) from `like` WHERE recipe.`unique_id` = `like`.`recipe_unique_id_fk`) AS like_count
FROM `recipe` 
JOIN `favourite` ON (recipe.`unique_id` = `favourite`.`recipe_unique_id_fk`) 
JOIN `user` ON (recipe.`user_unique_id_fk` = user.`unique_id`)
WHERE favourite.`user_unique_id_fk` = '565096811c0b51.08471830' 
ORDER BY recipe.`add_date` DESC