获取不相关的数据

时间:2017-10-14 02:52:42

标签: sql ms-access ms-access-2013

我试图通过三个表之间的查询来获取与之无关的数据,但我还没有实现这一壮举。

在我的情况下,我有三张桌子

  • 品牌
  • 分类
  • 作业(标记和类别之间的截距表)

在这种情况下,品牌和类别之间的关系是多对多的,因为品牌可以有多个类别或产品系列,或者一系列产品或类别,可以是多个品牌或由多个品牌生产。例如

雀巢是一个品牌,可以生产饼干,巧克力和哥伦比亚,生产饼干和巧克力。如果仔细观察,两者都会产生饼干,但一种产生巧克力,另一种产生巧克力。

然后,我想知道在选择雀巢的情况下如何获得巧克力,因为它不会产生巧克力,或者如果在数据库中注册了几个,那么获得所有不具有巧克力的巧克力引用了这个品牌。

image

1 个答案:

答案 0 :(得分:0)

对于MS-Access,您必须在ORACLE / MYSQL中使用等效的MINUS运算符。在这种情况下可以做到:

select distinct a.* 
from 

( select m.Nombre_marca, c.nombre_categoria from 
Marcas m, categorias c) a

left outer join

(select m1.Nombre_marca, c1.nombre_categoria 
from T_marc_categ mc 
join Marcas m1 on m1.Id_marca_a = mc.nomb_marca
join categorias c1 on c1.Id_categoria_auto = mc.nomb_linea) b

on (a.nombre_marca=b.nombre_marca and 
    a.nombre_categoria = b.nombre_categoria)
where b.nombre_marca is null and 
      b.nombre_categoria is null