Jos oikein ymmärsin, niin jotakin tämän kaltaistako ?
Ratkaisevana tekijänä jonkin aggrekaattifunktion käyttö (Koodi:SELECT * FROM osat; +----+-----------+ | id | osanimi | +----+-----------+ | 1 | Suristin | | 2 | Päristin | | 3 | Perse | | 4 | Kairain | +----+-----------+ SELECT * FROM tuotteet; +----+------------------+ | id | tuotenimi | +----+------------------+ | 1 | Perseensuristin | | 2 | Perseenpäristin | +----+------------------+ SELECT * FROM osa_tuote; +--------+----------+ | osa_id | tuote_id | +--------+----------+ | 1 | 1 | | 3 | 1 | | 2 | 2 | | 3 | 2 | +--------+----------+ SELECT o.id,o.osanimi,MIN(t.tuotenimi) AS tuotenimi, COUNT(t.id) as tuotteita FROM osat AS o LEFT JOIN osa_tuote AS ot ON o.id=ot.osa_id LEFT JOIN tuotteet AS t ON ot.tuote_id=t.id GROUP BY o.id; +----+-----------+------------------+-----------+ | id | osanimi | tuotenimi | tuotteita | +----+-----------+------------------+-----------+ | 1 | Suristin | Perseensuristin | 1 | | 2 | Päristin | Perseenpäristin | 1 | | 3 | Perse | Perseenpäristin | 2 | | 4 | Kairain | NULL | 0 | +----+-----------+------------------+-----------+ Tästä nähdään että kumpikaan tuote ei mahdu, koska kairain puuttuu molemmista :DMIN(t.tuotenimi)) sellaisille columneille, joita ei groupata. Välttämättä tämä ei ole paras mahdollinen tapa taklata käsillä oleva ongelma, mutta toimii isohkoillakin datamäärillä kohtuu nopeasti.
Eli siis jos osalla on 10 tekstisaraketta niin jokaiseen MIN() ?
Selvennetään vielä että tarkoitus on siis hakea esim. osalistaus ja queryssä _saattaa_ olla lisäksi where lause kuten WHERE osanimi like '%suri%'
Ja miksikö tämmöstä, siksi että listaukseen saisi mahdollisimman tehokkaasti yhden osan vain yhden kerran ja jokaiselle osalle sarakkeeseen yhden tuotteen ja erityisesti kun kuvien liitos toimii samalla periaatteella niin yhden kuvan, ei niin väliä edes että mikä kuva, tai kai senkin jollain id:llä saisi varmaan järjestettyä
