Samentrekken een op meer relatie in SQL

31-05-2013 | Marcel van Langen | SQL | 1opN, veel, relaties, SQL, SQL Server

Stel dat je een database hebt met een een op meer relatie (1 op N), bijvoorbeeld de relatie tussen plaatsen en postcodes. Is het dan mogelijk om een SQL statement op te stellen die in een resultaat zowel de plaatsen toont als de postcodes die bij de plaatsen horen?

Iedere plaats kan meerdere postcodes hebben, maar een postcode hoort altijd maar bij een plaats. Met een reguliere statement als:

SELECT
pla_plaats
, pos_postcode
FROM
plaats
LEFT OUTER JOIN postcode
ON plaats.pla_id = postcode.pos_pla_id
ORDER BY pla_plaats

Krijg je voor iedere combinatie een regel terug. Heeft een plaats 2 postcodes, dan zal de plaats dan ook twee keer worden vermeld. Wellicht dat dit soms gewenst is, maar het kan ook zijn dat je liever per plaats een veld wilt hebben met daarin alle postcodes ineens opgenomen. Gelukkig is dat mogelijk, door bovenstaande query als volgt aan te passen:

SELECT
pla_plaats
, STUFF((
SELECT ',' + pos_postcode
FROM postcode
WHERE postcode.pos_pla_id = plaats.pla_id
FOR XML PATH('')
), 1, 1, '') AS pos_postcode
FROM plaats
GROUP BY pla_plaats

Zo eenvoudig kan het zijn!

Over Morloff

Morloff ontwerpt en realiseert succesvolle webtoepassingen op het gebied van procesoptimalisatie, eCommerce en rapportage door de inzet van moderne webtechnieken, sociale media en zoekmachine optimalisatie.

over ons | diensten | portfolio | contact | route

naar website IJsmonster.nl naar website ICT intermediairs naar website marcelvanlangen.com

Twitter

Morloff

Cuneraweg 169a
3911 RH Rhenen

M +31 (0)6 - 515 96 189
W www.morloff.nl
E contactformulier

Morloff op Twitter Morloff op Facebook Morloff op LinkedIn Morloff via RSS