2010-03-11 8 views
8

Ich habe einige Probleme mit einer SQL-Anweisung, die die Anzahl der Teilnehmer eines Kurses finden müssen. Meine Datenbank-Design-Look gefällt das:Hilfe mit SQL-Anweisung (JOIN)

Tabelle Kurs: id | Kursname

Tabelle Student: id | Name

und die beiden viele-zu-viele-Beziehung zu verbinden Ich habe eine Tabelle:

Tabelle course_student: id | Kurs_ID | student_id

Ich möchte herausfinden, wie viele Studenten den Kurs "Database Design" besuchen. Ich weiß, dass die ID "1" ist, aber sagen wir, dass ich nicht wusste, wie meine SQL-Anweisung aussehen würde?

ich verschiedene Aussagen mit verschiedenem versucht habe, schließt sich zuerst die richtige ID aus der Kurs Tabelle auszuwählen, in dem der Name „Datenbank-Design“ und neben Ich habe die Suche in meinem course_student Tisch, an dem der course_id ist Gleich die gegründete ID (in diesem Fall 1) und wo alle student_id mit dieser ID verbunden ist.

Ich weiß, es ist ein bisschen komplexe Beschreibung, also bitte sagen Sie mir, wenn ich es besser erklären muss.

Dank Mestika

Antwort

9

Sie können so etwas wie

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' 

Sie versuchen, die Studenten Tisch beitreten nicht, wie Sie bereits die ID in der Tabelle course_student haben, so ein kleiner zu verbinden.

+1

darn Sie und Ihre Tippfähigkeiten –

+1

Der war gut, @astander. Hat es ausgearbeitet, als du gepostet hast. GJ. – cazlab

+0

HEHE, tut mir leid, Mann. Hatte SSMS geöffnet X-) –

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

Sieht aus wie astander schlug mich dazu. – Gabe

+0

Er schlug uns alle. '/ – cazlab

+1

für das zweite Beispiel, Sie müssten nicht einmal an den Tisch * Kurs * teilnehmen. –

0

nur eine etwas andere Art, aber gleiche Ergebnisse

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

Implizite Joins sind schlecht. Bitte ermutigen Sie nicht die Verwendung dieser schlechten Technik. – HLGEM

+0

Ich habe die Technik sehr lange erfolgreich eingesetzt. Bitte erläutern Sie, was damit falsch ist. – Jay