Mis únicas experiencias en consultas son con MySQL, pero espero que sea lo suficientemente similar.
Su consulta me parece extraña porque su subconsulta se encuentra en la cláusula SELECT. Nunca había visto eso antes ... pero aparentemente es compatible con MySQL. Usualmente la subconsulta viene después de un FROM o LEFT JOIN o JOIN.
Su ejemplo es bastante simple que se puede aplicar con un LEFT JOIN:
SELECT C.guid, ..., COUNT(distinct D.id) as numprogs
FROM Computers AS C
LEFT JOIN ComputerData as D ON D.computer_id = C.id
En este caso, LEFT JOIN es el tipo correcto de unirse a usar porque incluso si no hay ningún registro coincidente en la Tabla D para un registro C particular, su conjunto de resultados aún contendrá ese registro C y numprogs simplemente será cero, como era de esperar.
Si realmente desea utilizar una subconsulta, intente esto:
SELECT C.guid, ..., S.numprogs
FROM Computers AS C
LEFT JOIN
(SELECT computer_id, COUNT(*) as numprogs
FROM ComputerData GROUP BY computer_id) AS S
ON C.id=S.computer_id
Sugiero simplificar su consulta para obtener que sea la consulta más sencilla posible que debería funcionar, pero no funciona. Luego cuéntanos el mensaje de error específico que devuelve tu motor de base de datos.
Edit: Me gustó el MySQL chapter about subqueries y parece que deberías intentar eliminar la cláusula "como numprogramas" después de tu subconsulta ... quizás no tengas elección sobre el nombre de la columna que sale del subconsulta después de que ya haya compuesto la subconsulta.
¿Cuál es el error? –
Hola, Disculpe, se ha corregido. Gracias de todos modos, Azuka – Zahymaka