你好,我的问题对你们中的一些人来说很简单^^
我有一个桌子产品,推荐信和干预。当有干预时,表中的引用在干预所需的产品与干预之间建立了联系。
我想知道如何搜索已成为所有干预行动一部分的产品。
这是我的桌子:
--TABLE products
create table products (
reference char(5) not null check ( reference like 'DT___'),
designation char(50) not null,
price numeric (9,2) not null,
primary key(reference) );
-- TABLE interventions
create table interventions (
nointerv integer not null ,
dateinterv date not null,
nameresponsable char(30) not null,
nameinterv char(30) not null,
time float not null check ( temps !=0 AND temps between 0 and 8),
nocustomers integer not null ,
nofact integer not null ,
primary key( nointerv),
foreign key( noclient) references customers,
foreign key (nofacture) references facts
);
-- TABLE replacements
create table replacements (
reference char(5) not null check ( reference like 'DT%'),
nointerv integer not null,
qtereplaced smallint,
primary key ( reference, nointerv ),
foreign key (reference) references products,
foreign key(nointerv) references interventions(nointerv)
);-编辑:这是我的替换表中的一个选择

我们可以从这张图片中看到,DT802产品在每一次干预中都被使用,谢谢;)
发布于 2018-09-28 16:00:48
这将显示1行干预-产品。这是你期待的吗?
select interventions.nointerv, products.reference
from interventions
inner join replacements on interventions.nointerv = replacements.nointerv
inner join products on replacements.reference = products.reference;这一个?
select products.reference, products.designation
from interventions
inner join replacements on interventions.nointerv = replacements.nointerv
inner join products on replacements.reference = products.reference
group by products.reference, products.designation
having count(*) = (select count(*) from interventions);发布于 2018-09-28 16:08:34
你的问题很难理解。如果我将其解释为nointerv在replacements中的所有reference包含所有产品,那么:
select nointerv
from replacements r
group by nointerv
having count(distinct reference) = (select count(*) from products);https://stackoverflow.com/questions/52558489
复制相似问题