SERİ SQL: Birden çok Sütun da katılır. Bu mümkün mü?
Verilen:
Bir tablo aşağıdaki sütunları ile TABLE_1 adlı:
IDColumnAColumnBColumnC
TABLE_1 kendisini*, *, ***11 10 12*dayanarak iki kez birleştiği SQL sorgu var. Sorgu böyle bir şey görünebilir
Select t1.ID, t2.ID, t3.ID
From TABLE_1 t1
Left Join TABLE_1 t2 On
t1.ColumnA = t2.ColumnA
And t1.ColumnB = t2.ColumnB
And t1.ColumnC = t2.ColumnC
Left Join TABLE_1 t3 On
t2.ColumnA = t3.ColumnA
And t2.ColumnB = t3.ColumnB
And t2.ColumnC = t3.ColumnC
... and query continues on etc.
Sorun:
Bu Sorgu ETMENİZ halinde yeniden yazılması gerekiyor. Bir bıçak alarak denedim:
var query =
from t1 in myTABLE1List // List<TABLE_1>
join t2 in myTABLE1List
on t1.ColumnA equals t2.ColumnA
&& t1.ColumnB equals t2.ColumnA
// ... and at this point intellisense is making it very obvious
// I am doing something wrong :(
Nasıl SERİ benim sorgu yazabilirim? Neyi yanlış yapıyorum?
CEVAP
SQL bu Seri içinde birden çok sütun katılmadan biraz farklıdır.
var query =
from t1 in myTABLE1List // List<TABLE_1>
join t2 in myTABLE1List
on new { t1.ColumnA, t1.ColumnB } equals new { t2.ColumnA, t2.ColumnB }
...
Karşı karşılaştırmak istediğiniz anonim tür yararlanmak ve birden fazla sütun için bir tür oluşturmak zorunda.
Bu kafa karıştırıcı gibi görünüyor ilk başta ama sonra ile tanışmanız yolu SQL meydana gelen ifadeler olur yapmak çok daha mantıklı, yorganın altında bu oluşturur türü katılın arıyor.
EDİTİkinci örneğin ekleme yorum dayalı katıl.
var query =
from t1 in myTABLE1List // List<TABLE_1>
join t2 in myTABLE1List
on new { A = t1.ColumnA, B = t1.ColumnB } equals new { A = t2.ColumnA, B = t2.ColumnB }
join t3 in myTABLE1List
on new { A = t2.ColumnA, B = t2.ColumnB } equals new { A = t3.ColumnA, B = t3.ColumnB }
...

Nasıl tek, birden çok alanda katılın k...
Seri Sözdizimi - Seçme birden çok sütu...
Seri&; burada [sütun] " nasıl SQL (değ...
Birden çok sütun benzersiz kısıtlama...
Birden fazla "SERİ" sipariş...