Ik heb de volgende versimpelde tabel 'koe'.
Nu is de vraag aan de leerlingen in mijn klas (die ik les geef). Geef een lijst van de koeien die een bovengemiddelde productie hebben. Ik kom tot de volgende oplossing, maar ik vraag me af of dit technisch/wiskundig gezien goed is.
Gelieve geen antwoord te geven als: "ja dit is goed want dit kan in MySQL".
Ik zit namelijk met het volgende probleem.
Een SELECT query geeft een tabel terug. Deze tabel vergelijk ik met een kolom, namelijk k1.productie. Het lijkt me eigenlijk onmogelijk om een kolom te vergelijken met een tabel, je vergelijkt namelijk ook geen String met een boolean in bijv. JAVA. Nu snap ik dat SQL op runtime kan kijken of de tweede SELECT één regel kan opleveren, maar dit kan SQL niet bekijken op compile-time.
Stel als ik dit probleem even vertaal naar verzamelingsleer. Kan ik een element uit een verzameling vergelijken met een verzameling? Én, kan ik een element uit een verzameling vergelijken met een verzameling waar een aggregatie-functie op los is gelaten?
Mocht één van deze vragen "ja" als antwoord hebben, dan wil ik de leerlingen bovenstaand antwoord wel uitleggen, anders niet. Of is er nog een andere uitwerking op deze vraag? Mocht er ook geen andere - eenvoudige - uitwerking zijn, dan denk ik dat ik de vraag schrap.
id (int) | productie (int) |
Nu is de vraag aan de leerlingen in mijn klas (die ik les geef). Geef een lijst van de koeien die een bovengemiddelde productie hebben. Ik kom tot de volgende oplossing, maar ik vraag me af of dit technisch/wiskundig gezien goed is.
SQL:
1
| SELECT k1.id FROM koe AS k1 WHERE k1.productie > (SELECT AVG(k2.productie) FROM koe k2) |
Gelieve geen antwoord te geven als: "ja dit is goed want dit kan in MySQL".
Ik zit namelijk met het volgende probleem.
Een SELECT query geeft een tabel terug. Deze tabel vergelijk ik met een kolom, namelijk k1.productie. Het lijkt me eigenlijk onmogelijk om een kolom te vergelijken met een tabel, je vergelijkt namelijk ook geen String met een boolean in bijv. JAVA. Nu snap ik dat SQL op runtime kan kijken of de tweede SELECT één regel kan opleveren, maar dit kan SQL niet bekijken op compile-time.
Stel als ik dit probleem even vertaal naar verzamelingsleer. Kan ik een element uit een verzameling vergelijken met een verzameling? Én, kan ik een element uit een verzameling vergelijken met een verzameling waar een aggregatie-functie op los is gelaten?
Mocht één van deze vragen "ja" als antwoord hebben, dan wil ik de leerlingen bovenstaand antwoord wel uitleggen, anders niet. Of is er nog een andere uitwerking op deze vraag? Mocht er ook geen andere - eenvoudige - uitwerking zijn, dan denk ik dat ik de vraag schrap.
Asus EN8800GTS, Asus P5E, Intel E8400, 2x500gb Spinpoint (raid0), Zalman HP 600 watt, cnps 9500 led, creative xfi music, 4x1gb hyperX PC2 8500