# 2 tabloyu tek sorgu ile getirmek ?

• ### Soru

• Sorunum aslında olabilirmi konusunda sizden bilgi mahiyetindedir.

2 select sorgosu sonucunu döndürmek istiyorum..1 tabloda banka bilgileri diğerindeki sorguda ise krediler var bunları bir tabloda cekmem gerekli yardımlarınız bekliyorum..

1. sorgu

```SELECT  LGMAIN.DISCDUEDATE AS [VADE] ,
LGMAIN.LINEEXP AS [AÇIKLAMA] ,
LGMAIN.TOTAL ,
ISNULL(CLFIC.FICHENO, 'BOŞ') AS [FİŞ_NO] ,
CASE WHEN LGMAIN.DEVIR = 1 THEN 'DEVİR ETMİŞ'
ELSE 'DEVİR OLMAMIŞ'
END AS [DEVİR_BİLGİSİ]
FROM    LG_016_01_PAYTRANS LGMAIN WITH ( NOLOCK, INDEX = I016_01_PAYTRANS_I1 )
LEFT OUTER JOIN LG_016_CLCARD CLNTC WITH ( NOLOCK ) ON ( LGMAIN.CARDREF = CLNTC.LOGICALREF )
LEFT OUTER JOIN L_CURRENCYLIST EXCH WITH ( NOLOCK ) ON ( LGMAIN.TRCURR = EXCH.CURTYPE )
LEFT OUTER JOIN LG_016_BANKACC BNACC WITH ( NOLOCK ) ON ( LGMAIN.BANKACCREF = BNACC.LOGICALREF )
LEFT OUTER JOIN LG_016_01_CLFLINE CTRNS WITH ( NOLOCK ) ON ( LGMAIN.FICHEREF = CTRNS.LOGICALREF )
LEFT OUTER JOIN LG_016_01_CLFICHE CLFIC WITH ( NOLOCK ) ON ( CTRNS.SOURCEFREF = CLFIC.LOGICALREF )
WHERE   ( LGMAIN.BNTRCREATED = 0 )
AND ( LGMAIN.TRCODE IN ( 72 ) )
AND ( LGMAIN.CANCELLED = 0 )
AND ( ( BNACC.CARDTYPE IN ( 5, 6 ) )
OR ( ( BNACC.CARDTYPE IN ( 1, 2, 3, 4 ) )
AND ( BNACC.KKUSAGE = 1 )
)
)
ORDER BY LGMAIN.DATE_ ASC;```

2. sorgu

```SELECT TOP 150

LGMAIN.DUEDATE ,

LGMAIN.TOTAL ,
LGMAIN.INTTOTAL ,
LGMAIN.BSMVTOTAL ,
BNCREDIT.CODE ,
BNCREDIT.TRCURR ,
BNACC.CODE ,

BNACC.IBAN ,
BNCREDIT.CRCALCTYPE ,
BNACC.DEFINITION_

FROM    LG_016_BNCREPAYTR LGMAIN WITH ( NOLOCK, INDEX = I016_BNCREPAYTR_I3 )
LEFT OUTER JOIN LG_016_BNCREDITCARD BNCREDIT WITH ( NOLOCK ) ON ( LGMAIN.CREDITREF = BNCREDIT.LOGICALREF )
LEFT OUTER JOIN LG_016_BANKACC BNACC WITH ( NOLOCK ) ON ( BNCREDIT.BNCRACCREF = BNACC.LOGICALREF )
WHERE   ( LGMAIN.TRANSTYPE = 0 )
AND ( LGMAIN.CREDITREF = 34 )
ORDER BY LGMAIN.DUEDATE ,
LGMAIN.LOGICALREF;```

12 Şubat 2016 Cuma 08:46

### Yanıtlar

• Şöyle bir önerim olabilir, kabaca;

```SELECT a.Alan1 as Alan11, a.Alan2 as Alan12, b.Alan1 as Alan21
FROM
(
) as a
INNER JOIN
(
) as b on a.Id = b.Id

```

e-mail: onay[nokta]yalciner[at]hotmail[nokta]com

• Yanıt Olarak Öneren 12 Şubat 2016 Cuma 09:30
• Yanıt Olarak İşaretleyen 12 Şubat 2016 Cuma 22:10
12 Şubat 2016 Cuma 08:57
• Olumsuz olursa hata cevapta degil ki. Sonucta iliskisel veritabani kullaniyorsun, sorgularinin arasinda yukaridaki haliyle bir iliski yok, olursa o cevap dogru. Yani:

`select a.Alan1, b.Alan2 from table1 a inner join table2 b on a.Table1Id = b.Table1id`

ile:

```select a.Alan1, b.Alan2
from (
select * from table1
) a inner join
(select * from table2) b on a.Table1Id = b.Table1id```

ayni kapiya cikan sorgular. Sorgularin tekrarlamasi gerekiyorsa, ya da sonraki oncekinden birseyler kullaniyorsa daha pratik olani with kullanmak:

```with sorgu1 as
(
),
sorgu2 as (
)
SELECT a.Alan1 as Alan11, a.Alan2 as Alan12, b.Alan1 as Alan21
FROM
sorgu1 as a
INNER JOIN
sorgu2 as b on a.Id = b.Id;
```

12 Şubat 2016 Cuma 17:20

### Tüm Yanıtlar

• Şöyle bir önerim olabilir, kabaca;

```SELECT a.Alan1 as Alan11, a.Alan2 as Alan12, b.Alan1 as Alan21
FROM
(
) as a
INNER JOIN
(
) as b on a.Id = b.Id

```

e-mail: onay[nokta]yalciner[at]hotmail[nokta]com

• Yanıt Olarak Öneren 12 Şubat 2016 Cuma 09:30
• Yanıt Olarak İşaretleyen 12 Şubat 2016 Cuma 22:10
12 Şubat 2016 Cuma 08:57
• @Önay bey

hemen deneyecegim..olumlu olursa yanıt olarak işaretlerim..

12 Şubat 2016 Cuma 15:14
• alt alta mı gelmesi gerekiyor. ne olması gerekiyor sorgundan anlamadım. Eğer alt alta ise UNION ALL

kdrgny@outlook.com

12 Şubat 2016 Cuma 15:22
• Olumsuz olursa hata cevapta degil ki. Sonucta iliskisel veritabani kullaniyorsun, sorgularinin arasinda yukaridaki haliyle bir iliski yok, olursa o cevap dogru. Yani:

`select a.Alan1, b.Alan2 from table1 a inner join table2 b on a.Table1Id = b.Table1id`

ile:

```select a.Alan1, b.Alan2
from (
select * from table1
) a inner join
(select * from table2) b on a.Table1Id = b.Table1id```

ayni kapiya cikan sorgular. Sorgularin tekrarlamasi gerekiyorsa, ya da sonraki oncekinden birseyler kullaniyorsa daha pratik olani with kullanmak:

```with sorgu1 as
(
),
sorgu2 as (