mysql - 我需要有关 MySql 查询的帮助(从多个表中选择)

标签 mysql sql database

所以,我有 3 个表:

  1. PIZZA 包含 Pizza_ID、pizza_title 和 Pizza_price
  2. INGREDIENTS,带有成分_ID;成分_标题和成分_描述
  3. PIZZA_INGREDIENTS,包含 ID、pizza_id、成分_id

我需要从 PIZZA 中选择包含 2 种成分的所有 Pizza_title。 现在,我有这个:

SELECT pizza.pizza_ID, pizza.pizza_title, pizza.pizza_price, pizza_ingredients.ingredient_id
FROM pizza
JOIN pizza_ingredients ON pizza_ingredients.pizza_id=pizza.id
WHERE pizza_ingredients.ingredient_id='7' or pizza_ingredients.id='4'
GROUP BY pizza.id

此代码返回所有含有成分 7 或成分 4 的披萨。我只需要同时含有成分 7 和 4 的披萨...

SQL 不是我的强项,我感谢任何帮助。 谢谢

最佳答案

尝试加入一个子查询,该子查询进行聚合以查找具有两种成分的所有比萨饼:

SELECT p1.*
FROM pizza p1
INNER JOIN
(
    SELECT pizza_id
    FROM pizza_ingredients
    GROUP BY pizza_id
    HAVING COUNT(*) = 2
) p2
    ON p1.pizza_id = p2.pizza_id;

如果我误解了您问题的措辞,而您想查找具有两种特定成分的所有比萨饼,而不考虑其他成分,请使用以下查询:

SELECT p1.*
FROM pizza p1
INNER JOIN
(
    SELECT pizza_id
    FROM pizza_ingredients
    WHERE ingredients_id IN (4, 7)
    GROUP BY pizza_id
    HAVING COUNT(DISTINCT ingredients_id) = 2
) p2
    ON p1.pizza_id = p2.pizza_id;

关于mysql - 我需要有关 MySql 查询的帮助(从多个表中选择),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48679606/

相关文章:

MySql 静默安装/qn 不工作

sql - PostgreSQL:是否值得准备一个简单地调用存储过程并传递其参数的语句

尝试使用主键添加重复条目时,Python 忽略 MySQL IntegrityError

mysql - 根据同一行中的另一个 DISTINCT 列获取 DISTINCT 列

database - 最好的 Firebird IDE 是什么?

mysql - 插入列值与自动增量值相同的行

php - 选择一个月中每一天的计数

php - 从数据库中的每个用户检索最后插入的行

mysql - MAMP MySQL innodb 和丢失错误

mysql - MySQL 中对多列进行操作的函数