SORU
15 Mart 2011, Salı


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ı:

  • ID
  • ColumnA
  • ColumnB
  • ColumnC

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
15 Mart 2011, Salı


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 }
    ...

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • ecf150king

    ecf150king

    20 Ocak 2006
  • hanksranger

    hanksranger

    6 EKİM 2009
  • Julian Smith

    Julian Smith

    31 EKİM 2006