Hoi,
De titel van dit bericht is er vaag, omdat ik niet de juiste woorden ervoor kon verzinnen. Daarom met een kleine illustratie wat ik wil bereiken.
Ik beschrijf een conversie van eenheden, bijvoorbeeld graden fahrenheit -> graden celsius
Ik kan ook conversies bedenken van many-to-many, bijv: x,y,z -> a,b,c.
Ik sla de conversie functie op in een tabel:
Tabel: conversions
Velden: id, function
Er zijn verder 2 tabellen waarin ik eenheden koppel aan conversies: conversions_from, conversions_to
Tabel: conversions_from, conversions_to
Velden: conversionID, unitID
Hiermee kan ik dus meerdere eenheden koppelen aan een conversie functie.
Nu wil ik met 1 query uitzoeken of er al een functie bestaat die de conversie beschrijft van eenheden x,y naar eenheden a,b.
De volgende query doet dit:
Zoals je wel ziet schaalt dit niet erg goed (many-to-many) en is het lastig om deze query programatisch op te bouwen. Ik vroeg me af of hier standaard constructies voor zijn, of dat ik mijn tabel anders moet inrichten.
Alvast bedankt!
De titel van dit bericht is er vaag, omdat ik niet de juiste woorden ervoor kon verzinnen. Daarom met een kleine illustratie wat ik wil bereiken.
Ik beschrijf een conversie van eenheden, bijvoorbeeld graden fahrenheit -> graden celsius
Ik kan ook conversies bedenken van many-to-many, bijv: x,y,z -> a,b,c.
Ik sla de conversie functie op in een tabel:
Tabel: conversions
Velden: id, function
Er zijn verder 2 tabellen waarin ik eenheden koppel aan conversies: conversions_from, conversions_to
Tabel: conversions_from, conversions_to
Velden: conversionID, unitID
Hiermee kan ik dus meerdere eenheden koppelen aan een conversie functie.
Nu wil ik met 1 query uitzoeken of er al een functie bestaat die de conversie beschrijft van eenheden x,y naar eenheden a,b.
De volgende query doet dit:
SQL:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
| SELECT c.function FROM conversions_to t1, conversions_to t2, conversions_from f1, conversions_from f2, conversions c WHERE t1.unitID = 'a' AND t2.unitID = 'b' AND f1.unitID = 'x' AND f2.unitID = 'y' AND t1.conversionID = t2.conversionID AND f1.conversionID = t1.conversionID AND f2.conversionID = f1.conversionID AND c.id = t1.conversionID |
Zoals je wel ziet schaalt dit niet erg goed (many-to-many) en is het lastig om deze query programatisch op te bouwen. Ik vroeg me af of hier standaard constructies voor zijn, of dat ik mijn tabel anders moet inrichten.
Alvast bedankt!
Ik blijf er iig vrij nuchter onder....