Vinzenz Mai: Normalisierung und Abfrage (MySQL)

Beitrag lesen

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