El problema no es tan fácil (viable u óptimo) de solucionar por medio de PHP, sino desde la consulta, creo que necesitas probar un poco los diferentes tipos de JOIN para ver cuál te devuelve los resultados en la forma que los necesitas:
http://www.codinghorror.com/blog/200...sql-joins.html