Hallo,
Fuer die 2. Variante wuerde ich mal das Stichwort: GROUP_CONCAT ins spiel bringen wollen. Die 1. Variante erreichst du eventuell durch dynamischen Zusammenbau eines passenden SELECT Statements
wozu Du Dir folgende Archivbeiträge ansehen kannst:
</archiv/2006/3/t125385/#m808450>
</archiv/2008/6/t173119/#m1136008>
</archiv/2009/3/t184124/#m1220523>
Bei den von Dir geposteten Beispieldaten kämst Du mit
SELECT
t.datum,
t.absender,
t.empfaenger,
t.preis,
-- je eine der folgenden Zeilen für jeden Eintrag in der Tabelle besonderheiten:
MAX(CASE WHEN b.id = 1 THEN 'x' ELSE '' END) AS hebe,
MAX(CASE WHEN b.id = 2 THEN 'x' ELSE '' END) AS hub
FROM
tour t
LEFT OUTER JOIN
tourbesonderheit tb
ON
t.id = tb.tour_id
LEFT OUTER JOIN
besonderheit b
ON
tb.besonderheit_id = b.id
GROUP BY
t.datum,
t.absender,
t.empfaenger,
t.preis
ORDER BY
t.id
zu dem von Dir angegebenen Ergebnis. Ausführliche Erläuterungen findest Du in den verlinkten Threads.
oder durch Verarbeitung der einzelnen Resultate mithilfe von (assoziativen) Arrays in Perl.
Freundliche Grüße
Vinzenz