2010-03-11 16 views
8

Tengo algunos problemas con una declaración de SQL que tiene que encontrar la cantidad de estudiantes que asisten a un curso. mi base de datos de diseño le gusta este aspecto:Ayuda con la declaración de SQL (JOIN)

Tabla Curso: Identificación | course_name

Tabla Estudiante: id | nombrar

Y para conectar la relación de dos a muchos-a-muchos Tengo una tabla:

Tabla course_student: Identificación | curso_id | student_id

Lo que quiero es saber cuántos estudiantes asisten al curso denominado "Diseño de bases de datos". Sé que el ID es "1", pero digamos que no sabía, ¿cómo sería mi declaración SQL?

He intentado varias declaraciones diferentes con diferentes uniones para seleccionar primero el ID correcto de la mesa supuesto, donde el nombre es "Diseño de base de datos" y al lado tengo que buscar en mi course_student mesa donde el course_id es igual al ID fundado (en este caso 1) y donde todo student_id está conectado a este id.

Sé que es una descripción un poco compleja, así que por favor dígame si tengo que explicarlo de una mejor manera.

Gracias Mestika

Respuesta

9

Puede intentar algo así como

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' 

Usted no tiene que unirse a la mesa de estudiantes como usted ya tiene el ID de la tabla course_student, por lo menos 1 unirse.

+1

maldito usted y sus habilidades de escritura –

+1

buena, @astander. Estaba resolviendo cuando publicaste. GJ. – cazlab

+0

HEHE, lo siento hombre. Tenía SSMS abierto 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

Parece que un espectador me golpeó. – Gabe

+0

Nos ganó a todos. '/ – cazlab

+1

para el segundo ejemplo, ni siquiera tendría que unirse a la mesa * Curso *. –

0

sólo un estilo un poco diferente, pero mismos resultados

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

Las combinaciones implícitas son malas. Por favor, no fomente el uso de esta tecnología de baja calidad. – HLGEM

+0

He utilizado la técnica con mucho éxito durante mucho tiempo. Por favor explica qué es un error con esto. – Jay