【问题标题】:how to write SQL Correlated subqueries如何编写 SQL 相关子查询
【发布时间】:2019-03-15 15:14:03
【问题描述】:

我有两个表 ItemsDetailsItemsSquare

**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认为你在那里缺少ANDOR
  • 为什么需要子查询?您可以通过加入来实现这一目标。 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


【解决方案1】:

您是否可能错误地引用了您的子查询?

代替:

...
AND itd.ItmDtlId = (
    SELECT itd.ItmDtlId 
    FROM ItemsSquare its
    WHERE itd.ItmDtlId = its.ItmDtlIdand
      AND itd.Qty > its.ItmSqQty
)

收件人:

...
AND itd.ItmDtlId = (
    SELECT its.ItmDtlId 
    FROM ItemsSquare its
    WHERE itd.ItmDtlId = its.ItmDtlIdand
      AND itd.Qty > its.ItmSqQty
)

【讨论】:

  • 至少用its.ItmDtlIdand itd.Qty修复语法错误:)
猜你喜欢
  • 2020-10-04
  • 1970-01-01
  • 2022-09-18
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多