我有两个查询。在第一个查询中,如果与第二个查询分开,我得到了很好的结果。
第一次查询
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
得到的值,我想加入第一个查询。
我想知道是否可以从这两个中查询一个。我想我不能联合运算符,因为这两个查询的列数不匹配。
答案 0 :(得分:0)
第一个查询中已存在相同的表和相同的列。也许你想要一个自我加入,像这样:
FROM [dbo].[NarudzbaKupacaStavke] nks LEFT JOIN [dbo].[NarudzbeKupacaZaglavlje] nkz ON nkz.Id = nks.IdNarudzbe LEFT JOIN [dbo].[NarudzbeKupacaZaglavlje] nkz2 ON nkz2.Id = nkz.[IdNastaloOdDokumenta] 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