ik heb een vraag over omgaan met genormaliseerde data:
de volgende tabellen heb ik:
tblMateriaal
tblMateriaalKenmerken
nu wil ik dus een view in Postgres maken die bepaalde kenmerken laat zien.
optie één:
het resultaat wat ik krijg is
18, hout, 1950
18, hout, Null
waarom krijg ik die Null? Er zijn vele kenmerken met Null-waarden, komt het daar vandaan?
een andere manier:
dit laat wel de goede waarde zien, maar ik moet nog meerdere tabellen joinen, en op deze manier wordt het een zooitje.
Kan iemand aangeven hoe men met joins icm deze tabelopbouw omgaat?
de volgende tabellen heb ik:
tblMateriaal
ID | materiaalnummer | omschrijving |
1 | 18 | hout |
2 | 112 | staal |
tblMateriaalKenmerken
ID | materiaalnummer | kenmerk | kenmerkwaarde |
1 | 18 | lengte | 1950 |
2 | 18 | houtsoort | vuren |
2 | 18 | hoogte | Null |
nu wil ik dus een view in Postgres maken die bepaalde kenmerken laat zien.
optie één:
SQL:
1
2
3
4
5
6
| select distinct m.materiaalnummer, m.omschrijving, case when mk.kenmerk = 'LENGTE' then mk.kenmerkwaarde end as lengte from tblmateriaal m left join tblmateriaalkenmerken mk on m.materiaalnummer = mk.materiaalnummer |
het resultaat wat ik krijg is
18, hout, 1950
18, hout, Null
waarom krijg ik die Null? Er zijn vele kenmerken met Null-waarden, komt het daar vandaan?
een andere manier:
SQL:
1
2
3
4
| select distinct m.materiaalnummer, m.materiaalcode, (select mk.kenmerkwaarde from tblmateriaalkenmerken mk where m.materiaalnummer = mk.materiaalnummer and mk.kenmerk = 'LENGTE') as lengte from tblmateriaal m |
dit laat wel de goede waarde zien, maar ik moet nog meerdere tabellen joinen, en op deze manier wordt het een zooitje.
Kan iemand aangeven hoe men met joins icm deze tabelopbouw omgaat?