0

以下のネストされた左結合に相当するlinqは何ですか?

SELECT y.YazilimciId, y.AdSoyad, u.UygulamaId, y.KullaniciAdi, y.IsTel, y.CepTel, y.Eposta, k.KurumAdi
FROM Yazilimcilar y,
     UygulamaYazilimci uy,
     Uygulamalar u
        left outer join
            (
                UygulamaKurum uk
                    left outer join  Kurumlar k on uk.KurumId = k.KurumId
            ) on u.UygulamaId = uk.UygulamaId

WHERE y.YazilimciId = uy.YazilimciId
AND   uy.UygulamaId = u.UygulamaId
AND   u.UygulamaId = '19EA3A29-40FF-45FF-B289-03885FDC9BFC'
4

1 に答える 1

0

なぜネストされた結合が必要なのですか?実際、私はこれまでこのような構文を見たことがなく、とにかくMSSQLServerでは機能しないかどうかはわかりません。クエリは次のように記述できます

SELECT y.YazilimciId, y.AdSoyad, u.UygulamaId, y.KullaniciAdi, y.IsTel, y.CepTel, y.Eposta, k.KurumAdi
FROM Yazilimcilar y,
     UygulamaYazilimci uy,
     Uygulamalar u
    left outer join UygulamaKurum uk on u.UygulamaId = uk.UygulamaId
    left outer join Kurumlar k on uk.KurumId = k.KurumId
WHERE y.YazilimciId = uy.YazilimciId
AND   uy.UygulamaId = u.UygulamaId
AND   u.UygulamaId = '19EA3A29-40FF-45FF-B289-03885FDC9BFC'

また、すべての結合を適切な結合構文で書き直すことを提案することもできます

SELECT y.YazilimciId, y.AdSoyad, u.UygulamaId, y.KullaniciAdi, y.IsTel, y.CepTel, y.Eposta, k.KurumAdi
FROM Uygulamalar u
    inner join UygulamaYazilimci uy on uy.UygulamaId = u.UygulamaId
    inner join Yazilimcilar y on y.YazilimciId = uy.YazilimciId
    left outer join UygulamaKurum uk on u.UygulamaId = uk.UygulamaId
    left outer join Kurumlar k on uk.KurumId = k.KurumId
WHERE u.UygulamaId = '19EA3A29-40FF-45FF-B289-03885FDC9BFC'

これで、LINQを簡単に記述できます:)

于 2012-11-24T06:24:04.430 に答える