【问题标题】:Two select statements turn into one两个 select 语句合二为一
【发布时间】:2017-10-26 08:40:46
【问题描述】:

我有两个查询。在第一个查询中,如果与第二个分开,我得到了很好的结果。

第一次查询

SELECT * 
FROM 
(
     SELECT nks.[Id] 
     , nks.[IdNarudzbe]
     , nks.[IdArtikla] as artikal
     , nks.[IdUsluge]
     , nks.[Naziv]
     , nks.Kolicina
    , p.Naziv as kupac
    , p.Id as kupacId
    , p.Adresa
    , p.Telefon
    , nkz.[BrojDokumenta] AS nalog
    , nkz.[BrojDokumentaKroz] AS nalogKroz
    , nkz.[RokIsporuke]
    , nkz.[IdNastaloOdDokumenta]
    , d.Naziv as drzava
    FROM [dbo].[NarudzbaKupacaStavke] nks
    LEFT JOIN [dbo].[NarudzbeKupacaZaglavlje] nkz
        ON nkz.Id = nks.IdNarudzbe                            
    LEFT JOIN dbo.Partneri p
        ON nkz.IdKupac = p.Id
    LEFT JOIN dbo.Drzave d 
        ON p.IdDrzava = d.Id
    WHERE idArtikla IN ('FP80PUR-08', 'FP80PUR-09', 'FP80PUR-12') 
    AND nkz.[VrstaDokumenta] = 'PRO' 
    AND nkz.StatusArhive = 0 

    --... 

从第一个查询 nkz.[IdNastaloOdDokumenta] 对第二个很重要

SELECT BrojDokumenta
, BrojDokumentaKroz 
FROM .[dbo].[NarudzbeKupacaZaglavlje]
where id = nkz.[IdNastaloOdDokumenta]

例如。在第一个查询中,我得到了nkz.[IdNastaloOdDokumenta] = 20。我在 where 语句的第二个查询中使用的数字 20,以及我从 BrojDokumenta 获得的值,我想加入第一个查询。 我想知道是否可以从这两个中进行一个查询。我想我不能联合运算符,因为这两个查询中的列数不匹配。

【问题讨论】:

  • 这两个查询有不同的列,实际上是不同的表,你想到的输出是什么?
  • 您可以尝试使用 CTE 并加入结果
  • 正如@Valerica 所说。将您的 2 Select 放入每个 CTE,然后在 id = IdNastaloOdDokumenta 上加入它们
  • 你已经在上面的查询中选择了这两列,如果你只想要这两列相等的结果 id = IdNastaloOdDokumenta 那么只需将条件放在 where 子句中。(其中 nkz.id = nkz .IdNastaloOdDokumenta )
  • @TimBiegeleisen 我想在第一个查询中附加我从第二个查询中获得的另一个值。例如,在第一个查询中,我得到了 IdNastaloOdDokumenta = 20,从第二个查询中,我需要来自 BrojDokumenta 列的值,其中 Id = 20。我想知道是否可以在一个查询中得到结果,我可以在编程方面解决它

标签: sql sql-server


【解决方案1】:

同一张表和相同的列已经在第一个查询中。也许你想要一个自加入,像这样:

FROM [dbo].[NarudzbaKupacaStavke] nks 左连接 [dbo].[NarudzbeKupacaZaglavlje] nkz ON nkz.Id = nks.IdNarudzbe 左连接 [dbo].[NarudzbeKupacaZaglavlje] nkz2 ON nkz2.Id = nkz.[IdNastaloOdDokumenta] 左加入 dbo.Partneri p ON nkz.IdKupac = p.Id 左加入 dbo.Drzave d ON p.IdDrzava = d.Id idArtikla 在哪里('FP80PUR-08'、'FP80PUR-09'、'FP80PUR-12') AND nkz.[VrstaDokumenta] = 'PRO' AND nkz.StatusArhive = 0

【讨论】:

  • 您的问题现在解决了吗?你对这个答案还有疑问吗?要接受并回答“Click the Tick”以获取更多信息,请参阅help/accepting
猜你喜欢
  • 2021-07-09
  • 1970-01-01
  • 2015-08-30
  • 1970-01-01
  • 2011-08-22
  • 2010-11-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多