Tach!
Die Namen der Haustiere sollen bewusst nicht in eine eigene Tabelle ausgelagert werden.
Vor allem, wenn es erweiterbar sein soll, ist das keine gute Vorgehensweise. Eines der Probleme hast du ja schon kennengelernt.
Gibt es eine vernünftige Lösung bei drei oder vier Tiernamen, ohne diese in eine eigene Tabelle auszulagern?
Mir ist keine bekannt. Datenbanksysteme sind so ausgelegt, mit Datensätzen zu arbeiten, nicht mit Feldern, wenn es sich um gleichartige Daten handelt.
Mit when wird es da wohl ziemlich komisch. Die Lösung sollte auch dann noch funktionieren, wenn es gar kein Haustier gibt. In der Ausgabe sollen alle Attribute mit ihrem Trennstrich auftauchen, also im Zweifelsfall "||||". Attribute mit dem Wert null sollen am Ende stehen.
Mit extra Tabelle würde man die Tiere joinen und über GROUP BY per Person zusammenfassen. MySQL kennt dafür die Funktion GROUP_CONCAT(). Oracle kenne ich nicht weiter, aber da sagt mir eine Suche, dass das Äquivalent dazu LISTAGG() lautet.
dedlfix.