2011-07-12 20 views
9

Bir alan (id) içeren bir tablom var (Threads).her satırın yanı sıra Posts.thread alanı Threads.id ile aynı olan tablo Posts tablosundaki satır sayısını seçmek istiyorum.T-SQL Farklı tablodan seçim yapın ve sayın mı?

Bu, SQL'de nasıl yapılabilir?

(bu sözde SQL gibi bir şey: SELECT *, COUNT(* FROM Posts WHERE Posts.id=Threads.id) FROM Threads)

cevap

12
SELECT t.id, COUNT(p.thread) 
FROM Threads AS t 
    LEFT OUTER JOIN Posts AS p 
     ON t.id = p.thread 
GROUP BY t.id 
+0

Gönderiye gönderildi, vereceğim tam cevap bu. – Treborbob

+0

sol katılımı kullanmalısınız, aksi takdirde her satır –

+0

@ t-clausen almazsınız, evet katılıyorum. –

30

Emin - böyle bir şey?

SELECT 
    t.ThreadID, 
    (SELECT COUNT(*) FROM dbo.Posts p WHERE p.ThreadID = t.ThreadID) 
FROM 
    dbo.Threads t 
+1

sayesinde, mükemmel! 9 dakika içinde kabul edeceğim. – Ryan

+1

Gerçekten sadece kimliği (veya sadece birkaç sütun, yük değil) istiyorsanız, Waqas Raja'nın cevabını, bundan daha iyi bir şekilde gerçekleştirmek için birleştirme ve gruplama kullanarak beklerim. – Treborbob

+0

(SELECT COUNT (*) FROM dbo.Posts p WHERE p.ThreadID = t.ThreadID) 'sütununu nasıl sıralayabiliriz? –

İlgili konular