Vinzenz Mai: MySQL: group_concat in where-teil

Beitrag lesen

Hallo,

SELECT group_concat( nem.EM
SEPARATOR ', ' ) AS 'all.EM', neinsaetze.EINSATZNUMMER
FROM neinsaetze
JOIN nem ON neinsaetze.einsatznummer = nem.einsatznummer
GROUP BY neinsaetze.einsatznummer

ergibt:

all.EM                                           EINSATZNUMMER
99-11, 12-42, 10-30, 10-13, 10-10                1100000136
99-11, 10-30, 10-5, 10-13, 12-42, 10-10, 12-42   1100000137

Ich würde gerne soetwas machen wie
WHERE all.EM LIKE %10-5% um die zweite Zeile zu finden.

Weiß jemand eine Lösung oder eine Alternative?

a) die HAVING-Klausel nutzen:

HAVING all.EM LIKE '%10-5%'

b) die relevante Einsatznummer(n) über ein Subselect herausfinden:

WHERE  
    einsatznummer IN (  
        SELECT  
            nem2.einsatzunummer  
        FROM  
            nem nem2  
        WHERE  
            nem2.EM = '10-5'  
    ) 

Es ist Deine Aufgabe herauszufinden, welche der beiden bei Deinen Daten performanter ist. Vermutlich ist es die Lösung mit dem Subselect, weil sie von vornherein viele Datensätze ausfilter. Bei HAVING wird zunächst die gesamte Lösungsmenge ermittelt und erst zum Schluss das ausgefiltert, was Du benötigst.

Freundliche Grüße

Vinzenz