Dat viel weer niet mee. Met een kruistabel in MS-Access lukt het me via 3 queries. Waar is Oracle als je 'm nodig hebt

. De kunst is lege genres mee te nemen en tegelijk de filtering op genre beperkt te houden tot 1 query.
De kruistabel-oplossing is de query prima als kale query te runnen. De aanpak heeft wel als nadeel dat het aantal Genres tot 256 beperkt is. Dit is namelijk de maximale breedte van de ADO-recordset.
Een andere aanpak zonder kruistabel is hier te vinden:
[rml][ MySQL/SQL] Selectie uit koppeltabel op meerdere specifiek *[/rml]
Deze komt op hetzelfde neer, is sneller en netter, maar kost wat meer programmeerwerk om in te bedden.
Mijn voorbeeld is met leveranciers en producten. Vertaling naar films en genres:
Leverancier --> Film
Product --> Genre
Stap 1: Bak een tabel van alle mogelijke categorieen: Cross Join.
Stap 2: Maak een overlap tussen alle categorieen en de vastgelegde categorieen in de tussentabel: Kruistabel met een Outer Join. Ik doe er ook direct een vertaalslag ID --> Naam bij.
Stap 3: Selectie uit de leverancier-tabel. De selectie hier: Alle leveranciers die
wel bier verkopen maar
beslist geen bronwater.

Deze query is te voorzien van parameters, maar dat maakt 'm wel gevoelig voor verandering in Genres. Gelukkig veranderen categorieen niet zo vaak

.