首先非常感谢所有回复和评论。我想列出4个表中的一些字段。我的问题是,如果ODEMELER(客户支付)表没有BORCLAR(客户债务)表值。即;Sql Inner Join不要有结果
MusteriID = 1.
此客户购买商品。我将此过程插入BORCLAR表(BorcMusteriID = 1),但ODEMELER表对于此客户为OdemeMusteriID = !!! (空),因为客户不是付款。我想列出所有客户的所有债务这个代码;
(SELECT SUM(BORCLAR.BorcTutari) FROM BORCLAR WHERE BORCLAR.BorcMusteriID=
ODEMELER.OdemeMusteriID)-
(SELECT SUM(ODEMELER.OdemeTutar) FROM ODEMELER where BORCLAR.BorcMusteriID=
ODEMELER.OdemeMusteriID))
AS [Borç Toplamı] FROM BORCLAR)
但是这个代码是回复我只有BorcMusteriID,OdemeMusteriID有效的记录,那么我的很多顾客购买的物品,但现在不付款。我不列出这个。我尝试这个代码,但它是错误的;
((SELECT SUM(BORCLAR.BorcTutari) FROM BORCLAR WHERE
BORCLAR.BorcMusteriID=ODEMELER.OdemeMusteriID)-
(SELECT SUM(ODEMELER.OdemeTutar) FROM ODEMELER where
BORCLAR.BorcMusteriID=
CASE (SELECT COUNT(*) FROM ODEMELER WHERE
ODEMELER.OdemeMusteriID=BORCLAR.BorcMusteriID)
WHEN 0 THEN ODEMELER.OdemeMusteriID = ODEMELER.OdemeMusteriID
ELSE ODEMELER.OdemeMusteriID=0 END)) AS [Borç Toplamı] FROM BORCLAR
完成我的代码;
set dateformat dmy
SELECT
(SELECT TOP 1 BORCLAR.BorcTarih FROM BORCLAR WHERE BORCLAR.BorcTarih <=
CONVERT(DATETIME, GETDATE(), 104)
and
BORCLAR.BorcMusteriID=MUSTERILER.MusteriID order by BORCLAR.BorcTarih desc)
as [TARİH],
MUSTERILER.Unvan,MUSTERILER.Ad + ' ' + MUSTERILER.Soyad AS [Adı Soyadı],
MUSTERILER.Mahalle +
' ' + MUSTERILER.Cadde + ' '+MUSTERILER.Sokak + ' ' + MUSTERILER.ApartmanAdi+
' NO:' +
MUSTERILER.Numara + ' KAT:' + MUSTERILER.Kat + ' DAİRE:'+
MUSTERILER.Daire AS [Adres],
ARACSUBETANIMLAR.AracSubeAdi as [Araç/Şube Adı],
((SELECT SUM(BORCLAR.BorcTutari) FROM BORCLAR WHERE BORCLAR.BorcMusteriID=
ODEMELER.OdemeMusteriID)-
(SELECT SUM(ODEMELER.OdemeTutar) FROM ODEMELER where BORCLAR.BorcMusteriID=
ODEMELER.OdemeMusteriID))
AS [Borç Toplamı] FROM BORCLAR
INNER JOIN ARACSUBETANIMLAR ON BORCLAR.BorcAracSube = ARACSUBETANIMLAR.AracSubeID
INNER JOIN ODEMELER ON BORCLAR.BorcMusteriID = ODEMELER.OdemeMusteriID
INNER JOIN MUSTERILER ON BORCLAR.BorcMusteriID = MUSTERILER.MusteriID
where
BORCLAR.BorcAracSube=ARACSUBETANIMLAR.AracSubeID
and
((SELECT SUM(BORCLAR.BorcTutari) FROM BORCLAR WHERE BORCLAR.BorcMusteriID=
ODEMELER.OdemeMusteriID)-
(SELECT SUM(ODEMELER.OdemeTutar) FROM ODEMELER where BORCLAR.BorcMusteriID=
ODEMELER.OdemeMusteriID)>0)
group by MUSTERILER.Unvan,MUSTERILER.Soyad,MUSTERILER.Ad,
ARACSUBETANIMLAR.AracSubeAdi,
ODEMELER.OdemeMusteriID,BORCLAR.BorcMusteriID,MUSTERILER.
Cadde,MUSTERILER.Daire,
MUSTERILER.ApartmanAdi,MUSTERILER.Mahalle,MUSTERILER.Kat,
MUSTERILER.Numara,MUSTERILER.Sokak,
MUSTERILER.MusteriID
非常感谢。
你可以尝试,通过替换你的INNER JOIN LEFT JOIN?然后,用它检查结果。 –
我替换了LEFT JOIN,但结果没有改变。 – EthemX