mysql - 针对另一列查询关系表

标签 mysql

我有两个表、实体和组件,每个都有一个名称和唯一 ID。第三个表映射这两个 ID 之间的多对多关系,称为构建,包含两列:entity_ID 和 component_ID。实体由一定数量的组件组成。因此,如果构造表如下所示:

+----------+---------------+
|entity_id |  component_id |
+----------+---------------+
|        1 |             1 | 
|        1 |             2 | 
|        2 |             2 | 
|        2 |             6 | 
+----------+---------------+

实体 1 由组件 1,2 组成,而实体 2 由组件 2 和 6 组成。我正在开发的应用程序还有一个可用表,其中包含所有可用组件的 ID。我的问题是,如何查询数据库以返回严格由可用表中的组件构造的实体?在给定的示例中,如果 1,2 和 6 都在可用表中,则应返回实体 1 和 2。否则,如果 2 不在可用表中(但 1 和 6 在),则不返回任何内容。我是 MySQL 新手,所以如果您也能解释一下逻辑,那就太好了。

最佳答案

我测试了@Abdullah的子查询,确实得到了与我想要的相反的结果。经过一些测试后,我最终得到了嵌套查询,它们为我提供了我正在寻找的内容:

select distinct entity_id from construction 
where entity_id not in (
    select entity_id from construction c left outer join available a on a.id = c.component_id 
    where a.id is null 
);

关于mysql - 针对另一列查询关系表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6686665/

相关文章:

php - 错误导致页面关闭并重新打开 - PHP/HTML

mysql - 使用 POINT 列的邮政编码半径搜索

表上的 php mysql 原子 ' Select and Delete '

PHP MySQL 与 Play Framework 兼容?

php - 为一个类(class)分配科目的Mysql表设计

php - 使用 AJAX/jQuery 在文本区域中显示 PHP 回显?

java - Eclipse 编译器错误提示连接变量无法解析为类型

mysql声明变量语法错误

php - MySQL需要子选择或临时表

javascript - 即使刷新后也保留文本框值