Tach!
Die correlated Subquery ändert aber nichts an dem Umstand, dass sie für jede einzelne Ameise und vor allem Fliege den Namen des zugehörigen Wärters in der Ergebnismenge hat.
Ich wüsste nicht, wie man das wegbekommt. Wenn man das nicht in der Abfragemenge hat, dann entsteht die Datenverdopplung halt nicht schon im DBMS sondern erst bei der Ausgabe der Daten. Das entlastet vielleicht den Teil zwischen DBMS und abfragendem Programm, aber belastet dafür Letzteres.
Wenn Du Sorge hast, dass sich Tabellen während des großen Join ändern, brauchst Du eine Transaktion um das Ganze mit einem entsprechenden Isolationslevel.
Wenn das der Fall sein kann, hat man ein anderes Problem. Selbst wenn die Daten konsistent abgefragt wurden, verlieren sie an Wert, weil sie zwischen Abfrage und Betrachten veraltet sind.
dedlfix.