14 Temmuz 2009, Salı
ETMENİZ için SQL - çoklu Katılın Dış birleşim koşulları Bıraktı
SERİ çevirmek için çalışıyorum şu SQL, var:
SELECT f.value
FROM period as p
LEFT OUTER JOIN facts AS f ON p.id = f.periodid AND f.otherid = 17
WHERE p.companyid = 100
Sol dış normal uygulaması (örn. katılmak gördüm into x from y in x.DefaultIfEmpty()
vb.) ama diğer birleştirme durumu (AND f.otherid = 17
) tanıtmak için nasıl emin değilim
EDİT
Neden AND f.otherid = 17
koşul yerine WHERE KATILIN parçası mıdır?
f
bazı satırlar olmayabilir ve ben hala bu satırlar dahil olmak istiyorum çünkü. Eğer durum katıldıktan sonra WHERE uygulanan, eğer - o halde, bu davranışlarını anlamıyorum.
Ne yazık ki bu
from p in context.Periods
join f in context.Facts on p.id equals f.periodid into fg
from fgi in fg.DefaultIfEmpty()
where p.companyid == 100 && fgi.otherid == 17
select f.value
bu eşdeğer gibi görünüyor:
SELECT f.value
FROM period as p
LEFT OUTER JOIN facts AS f ON p.id = f.periodid
WHERE p.companyid = 100 AND f.otherid = 17
çok peşinde olduğum şey değildir.
CEVAP
14 Temmuz 2009, Salı
DefaultIfEmpty()
çağırmadan önce birleştirme koşulu tanıtmak gerekir. Sadece uzatma yöntemi sözdizimini kullanmak istiyorum:
from p in context.Periods
join f in context.Facts on p.id equals f.periodid into fg
from fgi in fg.Where(f => f.otherid == 17).DefaultIfEmpty()
where p.companyid == 100
select f.value
Ya da bir alt sorgu kullanabilirsiniz:
from p in context.Periods
join f in context.Facts on p.id equals f.periodid into fg
from fgi in (from f in fg
where f.otherid == 17
select f).DefaultIfEmpty()
where p.companyid == 100
select f.value
Bunu Paylaş:
ETMENİZ için Java karşılığı nedir?...
Python çoklu kurucular için temiz, pyt...
Nasıl SQL Server ile kullanma İÇ BİRLE...
CSS kullanın "..." taştı eng...
Nasıl kırmak için Python çoklu döngüle...