Cita: Me saca los resultados de una sola a.ID, cuando varias a.ID pueden estar asociadas al -> a.code = "1420-21312"
Estás mirando mal la cosa.
Puede ser cierto que en el campo "code" de la tabla "annotations" haya múltiples registros donde aparezca el valor "1420-21312", pero sólo hay un único registro donde se cumplen
todas las otras condiciones que propones
al mismo tiempo, y en esa consulta tu estás poniendo cinco (5) restricciones de integridad relacional y dos condiciones de filtrado, o sea siete condiciones que cumplir.
Ese es el tema.
Los JOINs que planteas son
mandatorios, por lo que sólo devolverá registros si se cumplen
todos.
Ahora bien, si quieres efectivamente que devuelva todos los registros de la tabla
anotations que tengan ese valor en ese campo, deberás determinar qué relaciones con las otras tablas son en realidad
opcionales, es decir, valores no mandatorios, o cuáles no están cumpliendo las restricciones.
Cuando un valor es opcional hay que usar LEFT JOIN o RIGHT JOIN según el caso, pero para ello hay que adaptar la sintaxis y orden de las tablas a fin de evitar productos cartesianos o resultados erróneos por cadenas de dependencias mal definidas.
En definitiva, quiero que entiendas dos cosas:
1) Si devuelve lo mismo que lo que desarrollaste, significa que la lógica simplificada de lo que te propongo es equivalente,
solo que más optimizado, cosa que notarás con muuuuchos datos.
2) No existe "error" en la consulta, sino en todo caso restricciones que no se están cumpliendo, o datos que en realidad no están relacionados o no están completos.