【发布时间】: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