Trata esta sentencia en un solo recordset por favor:
Código:
SELECT
a.id_libro,
a.nombre_libro,
(SELECT count(id_libro) as contador FROM articulos where id_libro= a.id_libro) as contador
FROM libros a
WHERE a.nombre_libro <>''
order by
(SELECT count(id_libro) as contador FROM articulos where id_libro= a.id_libro),
a.nombre_libro