【发布时间】:2019-03-15 15:14:03
【问题描述】:
我有两个表 ItemsDetails 和 ItemsSquare
**ItemsDetails** table have following column
ItmDtlId P.K
Itmid F.K
AssetId F.k
Qty
TDate
Approved
**ItemsSquare** table have following column
ItmSqrId P.k
ItmDtlId F.k
ItmSqQty
Date
从 ItemsDetails 表中,我想显示 ItemDetails 表中的所有记录,以及 ItemsSquare 表中的记录 ItmDtlId 与 ItemDetails 中的相同,然后将 ItemDetails 表和 Itemsquare 表中的 Quantity 比较为 Qty > ItmSqQty
基本上我想从基于 o ItmDtId 的 ItemDetails 表中访问 ItemsSquare 表的列 因为第一个表和第二个表没有关系
我正在使用如下的 sql 相关子查询,但我没有得到预期的结果
这是我的 sql 查询
SELECT itd.ItmDtlId
, it.Itmid
, itd.Qty
, itd.Approved
, as.Assetid
, as.Assetname
, itd.TDate
from ItemsDetails itd
join Item it
on itd.Itmid = it.Itmid
join Assets as
on itd.Assetsid = as.Assetsid
WHERE itd.Approved = 1
and itd.ItmDtlId = (SELECT itd.ItmDtlId FROM ItemsSquare its WHERE itd.ItmDtlId = its.ItmDtlIdand itd.Qty > ItmSqQty)
请建议我如何有效地编写 Sql 子查询以获得所需的结果
【问题讨论】:
-
MySQL 还是 SQL Server?
-
itd.ItmDtlId=its.ItmDtlIdand itd.Qty > ItmSqQty我认为你在那里缺少AND或OR。 -
为什么需要子查询?您可以通过加入来实现这一目标。
SELECT itd.ItmDtlId,it.Itmid,itd.Qty,itd.Approved, as.Assetid,as.Assetname,itd.TDate from ItemsDetails itd inner join Item it on itd.Itmid= it.Itmid inner join Assets as on itd.Assetsid= as.Assetsid INNER JOIN ItemsSquare its ON itd.ItmDtlId=its.ItmDtlIdand WHERE itd.Approved = 1 AND itd.Qty > ItmSqQty -
@Larnu 实际上她在
ItmDtlIdand中缺少一个空格字符 -
as肯定是关键字!?!
标签: sql subquery correlated-subquery