我有四张桌子:食物,食谱,用户和活动。
活动表有架构:
mysql> describe activities;
+-----------+--------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-----------+--------------+------+-----+---------+----------------+
| id | int(11) | NO | PRI | NULL | auto_increment |
| user_id | int(11) | YES | MUL | NULL | |
| recipe_id | int(11) | YES | MUL | NULL | |
| name | varchar(255) | YES | | NULL | |
| amount | int(11) | YES | | NULL | |
+-----------+--------------+------+-----+---------+----------------+
食谱表有架构:
mysql> describe recipes;
+--------------+--------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+--------------+--------------+------+-----+---------+----------------+
| id | int(11) | NO | PRI | NULL | auto_increment |
| image_url | varchar(255) | YES | | NULL | |
| user_id | int(11) | YES | MUL | NULL | |
| food_id | int(11) | YES | MUL | NULL | |
+--------------+--------------+------+-----+---------+----------------+
食物配方具有一对多的关系,食谱活动具有多对多的关系。
现在我想选择食物上的所有用户活动。我认为如果用户按照食物的配方行事,他就会根据食物行事。如果用户对同一食物的多个食谱采取行动,则只应计算一个。
有人能告诉我如何编写查询吗?
答案 0 :(得分:0)
SELECT DISTINCT activities.user_id,recipes.food_id
FROM activities
INNER JOIN recipes ON recipes.id = activities.recipe_id
应该从用户在活动中使用的食谱中提取每种食物的ID。
DISTINCT
确保没有重复项。