Parece que no tienes mucha idea de cómo funcionan las consultas SQL. No te preocupes, nadie nace sabiendo.
Lo que me extraña es que no sepas la teoría de bases de datos relacionales. La cláusula WHERE es la que te permite asociar las claves locales de los registros con las claves foráneas de la tabla asociada en una relación uno a muchos. Es lo que te permite saber dada una noticia cuáles son sus comentarios.
Lo que quieres ahora es más complicado puesto que habrá noticias que no tienen comentarios y por tanto en la tabla foránea de la relación no habrá registros qué relacionar. Es decir, lo que quieres es la unión más el complemento de una de las tablas (teoría de conjuntos ¿alguien?).
En SQL para hacer eso debes usar la cláusula JOIN que te trae la unión (es igual al WHERE de la consulta que ya viste), pero además de la unión quieres el complemento de la tabla de la izquierda, es decir LEFT JOIN.
La consulta que quieres iría más o menos así:
Código MySQL :
SELECT `noticias`.`id`, COUNT(`com`.`id`) AS `cuenta` FROM
`noticias`
LEFT JOIN `comentarios` `com` ON `com`.`idnoticias` = `noticias`.`id`
GROUP BY `noticias`.`id`
ORDER BY `cuenta` DESC
La cláusula GROUP BY agrupa todos los id de los comentarios para que COUNT pueda contarlos, en el caso del complemento de la tabla noticias (es deicr, las noticias que no tienen comentarios), no habrá ids de comentarios qué contar y por lo tanto COUNT contará cero que es lo que quieres obtener
.
El ORDER BY es de mi propia cosecha porque me parece que lo quieres mostrar en ese orden.
Saludos.