2010-03-11 35 views
8

Bir kursa katılan öğrenci sayısını bulmak zorunda olan bir SQL deyiminde sorun yaşıyorum. | id:SQL deyimiyle yardım (JOIN)

Tablo Ders: Benim Veritabanı tasarımı bakmak bunu beğendi course_name

Tablo Öğrenci: id | | id: isim

Ve bir tablo var iki çok-çok ilişki bağlamak için:

Tablo course_student course_id | student_id

"Veritabanı Tasarımı" adlı kursa kaç tane öğrencinin katılacağını öğrenmek istiyorum. Kimliğin "1" olduğunu biliyorum, ama bilmediğimi söyleyeyim, SQL ifadem nasıl görünürdü?

farklı olan birkaç farklı ifadeleri denedi ilk isim nerede course_id benim course_student içinde masa aramak için ettik "Veritabanı Tasarımı" ve yanındaki ders tablodan, doğru kimlik seçmek için katılır kurulan kimliğe (bu durumda 1) eşittir ve tüm student_id bu kimliğe bağlıdır.

Bunun biraz karmaşık bir açıklama olduğunu biliyorum, lütfen daha iyi bir şekilde açıklamam gerekiyorsa lütfen bana bildirin.

Teşekkür Mestika

cevap

9

Çok 1 daha az katılmak, Sen zaten course_student tabloda kimliğine sahip öğrenciler masaya katılmak zorunda değilsin

SELECT COUNT(cs.student_id) 
FROM Course c INNER JOIN 
     course_student cs ON c.id = cs.course_id 
WHERE c.course_name = 'Database Design' 

gibi bir şey deneyebilirsiniz.

+1

lanetlemek sen ve yazma becerileri –

+1

iyiydi, @astander. Mesaj gönderdiğinizde çalışıyordu. GJ. – cazlab

+0

HEHE, üzgünüm. SSMS açık X-) vardı –

0
SELECT count(a.id) 
FROM Course a 
INNER JOIN Course_Student b 
ON a.id = b.course_id 
WHERE a.course_name = 'Database Design' 
+0

Astander bana onu dövmek gibi görünüyor. – Gabe

+0

Hepimizi yendi. '/ – cazlab

+1

ikinci örnek için, tabloya katılmanız bile gerekmiyor * Kurs *. –

0

sadece biraz daha farklı bir tarzı, ama aynı sonuçlar

select COUNT(cs.student_id) as counter from Course c, course_student cs where c.id = cs.course_id and c.course_name = 'Database Design'

+1

Kapalı eklemler bozuk. Lütfen bu zayıf teknolojinin kullanımını teşvik etmeyin. – HLGEM

+0

Uzun zamandır tekniği çok başarılı bir şekilde kullandım. Lütfen bununla ne olduğunu açıkla. – Jay