우선 모든 답변과 의견을 보내 주셔서 감사합니다. 4 개의 테이블에서 일부 필드를 나열하고 싶습니다. 내 질문은 ODEMELER (고객 지불) 테이블에 BORCLAR (고객 부채) 테이블 값이없는 경우입니다. 즉;Sql Inner Join Dont Have 결과 :
MusteriID은 = 1
이 고객이 제품을 구입합니다. 이 프로세스를 BORCLAR 테이블 (BorcMusteriID = 1)에 삽입하지만 ODEMELER 테이블은이 고객과 OdemeMusteriID = null입니다. 고객이 지불하지 않기 때문에 (null). 그리고 나는이 코드를 모든 고객들로부터 빚을 모두 나열하고 싶습니다.
(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
고마워요.
LEFT JOIN으로 INNER JOIN을 바꾸시겠습니까? 그런 다음 결과를 확인하십시오. –
LEFT JOIN을 바꾸지 만 결과는 변경되지 않습니다. – EthemX