I (Ben 2005 olduğuna inanıyoruz) SQL Server kullanıyorum olduğundan daha az satırlarda sonuçlarını katılmak.SQL Server: sol sol masanın
I2 sütun ve 439 satır (her satır benzersiz) sahiptir TableA
sahiptir.
+----------+
|ID | Name |
+----------+
Ben 35 sütun ve bin satır yüzlerce (her satır da eşsizdir) sahiptir TableB
var. TableB
yılında
+------------------------------------------------------------------------------+
|Date | ID | Name | Blah1 | Blah2 | ... | Hour1 | Hour2 | Hour3 | ... | Hour24 |
+------------------------------------------------------------------------------+
Her satır saatlik gözlem ve diğer bazı ev tutarak bilgileri yer alır. Şimdi test amaçlı olarak sadece bugünün tarihi ile ilgileniyorum, yani 4/19/2013.
İstiyorsam: Her gün saatlik gözlem verisi olduğu 10526 farklı yer vardır olarak doğrudur 10526, elde
Select count(*)
from TableB
where Date = '4/19/2013 12:00:00 AM'
.
ben 439 satır vardır bir sonuç GEREKEN tableA ve TABLEB on a.id = b.id
, JOIN SOL istiyorum.
Ne yazık ki, sonuç 246 sıralıdır. Bu nasıl olabilir? Bir LEFT JOIN
bakılmaksızın TableB
bir maç oldu bakılmaksızın TableA
tüm satırları döndürmek için varsayalım değil midir? * DÜZENLEME
*
kullandığım komple sorgulama:
select *
from TableA as a
left join TableB as b on a.id = b.id
where RealDate = '4/20/2013 12:00:00 AM'
kullandığınız tüm sorguyu gösterebilir – PSR
@PSR - Kullanılan orijinal sorguyu dahil etmek için orijinal gönderimi düzenledim. – codingknob
@LoztInSpace değerli yorumu yeniden yorumlama: JOIN'den önce seçim tablolarına kısıtlamalar (WHERE kullanarak) ekleyin. Aksi takdirde, bu kısıtlamalar birleştirmelerin sonuç çıktısına etki eder (ve satırları orijinal tablolardan daha da azına indirebilir). –