select a.* from price a
inner Join Container b on a.PricePort=b.ContainerPort
inner Join ContainerCompetitive c
on b.id=c.ConIDQut
where a.LastUsefulDate>b.CloseDate and a.Price20>c.Compet20
inner Join Container b on a.PricePort=b.ContainerPort
inner Join ContainerCompetitive c
on b.id=c.ConIDQut
where a.LastUsefulDate>b.CloseDate and a.Price20>c.Compet20
from price p left join Container c
on p.PricePort=c.ContainerPort
left join ContainerCompetitive cc
on c.id=cc.ConIDQut
where c.CloseDate<p.LastUsefulDate and cc.Compet20<p.Price20
表之间的条件才有作用而你现在就只是 取表一的内容那么你和 表2 表3 作一对条件 就一点意义都没有啊。搂主你再考虑考虑
where exists (select 1 from Container where CloseDate<A.LastUsefulDate)
and exists (select 1 from ContainerCompetitive where Compet20<A.Price20)
and exists (select 1 from Container where ContainerPort=A.ContainerPort)
and exists (select 1 from Container B inner join ContainerCompetitive C on
B.ID=C.ConIDQut)
现在业务需要正好相反的条件,即:查询出所有不符合下列条件的表1:Price的记录:条件1:表Container的CloseDate 要早于 表Price的LastUsefulDate
条件2:表ContainerCompetitive的Compet20 要小于 表Price的Price20
条件3:表Container的ContainerPort 要等于 表Price的PricePort
条件4:表Container的ID 要等于 表ContainerCompetitive的ConIDQut我这样写,不知道对不对,大家帮忙看一下:select Distinct a.* from price a
inner Join Container b on a.PricePort!=b.ContainerPort
inner Join ContainerCompetitive c
on b.id!=c.ConIDQut
where a.LastUsefulDate<=b.CloseDate or a.Price20<=c.Compet20
select * from Price A
where exists (select 1 from Container where CloseDate<A.LastUsefulDate)
and exists (select 1 from ContainerCompetitive where Compet20<A.Price20)
and exists (select 1 from Container where ContainerPort=A.ContainerPort)
and exists (select 1 from Container B inner join ContainerCompetitive C on
B.ID=C.ConIDQut)
的答案是正解吗?
现在业务需要正好相反的条件(现在我作的是个竞拍的项目,需要显示可以竞价和等待竞价的模块),即:查询出所有不符合下列条件的表1:Price的记录:条件1:表Container的CloseDate 不要早于 表Price的LastUsefulDate
条件2:表ContainerCompetitive的Compet20 不要小于 表Price的Price20
条件3:表Container的ContainerPort 不要等于 表Price的PricePort
条件4:表Container的ID 要等于 表ContainerCompetitive的ConIDQut请问这个sql该如何去写?