如何编写这样的SQL查询语句?

时间:2014-08-11 04:17:31

标签: mysql

我有四张桌子:食物,食谱,用户和活动。

活动表有架构:

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    |                |
    +--------------+--------------+------+-----+---------+----------------+

食物配方具有一对多的关系,食谱活动具有多对多的关系。

现在我想选择食物上的所有用户活动。我认为如果用户按照食物的配方行事,他就会根据食物行事。如果用户对同一食物的多个食谱采取行动,则只应计算一个。

有人能告诉我如何编写查询吗?

1 个答案:

答案 0 :(得分:0)

SELECT DISTINCT activities.user_id,recipes.food_id 
FROM activities 
INNER JOIN recipes ON recipes.id = activities.recipe_id

应该从用户在活动中使用的食谱中提取每种食物的ID。 DISTINCT确保没有重复项。