Hola comuna, la pregunta es la siguiente:
Tengo dos tablas:
Tabla1: codalumno, nomalumno
Tabla2: numreg, codalumno, estado, otrocampo
Lo primero que quería hacer era tener el conjunto de registros de la tabla1
mas el numero de veces que aparecia en la tabla2:
SELECT o.codalumno, nomalumno, count(p.numreg) as numero
FROM Tabla1 O
LEFT OUTER JOIN Tabla2 P ON P.codalumno=O.codalumno
group by o.codalumno, nomalumno
Esta consulta me devuelve los datos que necesito, hasta ahi todo bien, pero
ahora lo que se quiere es que se devuelva el conjunto de los registros de la
tabla1 mas dos columnas adicionales, una columna en la que se sume los
registros en la que el campo 'estado' de la tabla2 sea igual a '1' y la otra
columna la suma de registros en la que el campo sea igual a '2' para cada
registro de alumno.
Me podrían decir la forma mas eficiente de hacerlo por favor, yo habia
pensado hacerlo asi, pero creo que no es la mejor manera:
SELECT o.codalumno, nomalumno
, (select count(numreg) from Tabla2 where estado='1' and
codalumno=o.codalumno)
, (select count(numreg) from Tabla2 where estado='2' and
codalumno=o.codalumno)
FROM Tabla1 O
LEFT OUTER JOIN Tabla2 P ON P.codalumno=O.codalumno
group by o.codalumno, nomalumno
Gracias.
Leer las respuestas