Om het voorbeeld wat makkelijker te maken, een analoog voorbeeld. Men heeft de volgende tabellen:
PRODUCT (model, manufacturer, type)
LAPTOP (model, ram, speed, ..)
Ik zou een lijst moeten hebben met in de eerste kolom alle laptop modellen en in de tweede kolom het model van de laptop van diezelfde manufacturer met het meeste ram. SQL/PSM is geen optie, UDT's eventueel wél.
PRODUCT
1001 A laptop
1002 A laptop
1003 B laptop
1004 B pc
LAPTOP
1001 256(MB) 2.2(Ghz)
1002 512(MB) 2.4(Ghz)
1003 256(MB) 2.0(Ghz)
dan moet 'k krijgen
1001 1002
1002 1002
1003 1003
Zou iemand mij kunnen helpen? 't Zit vast in de bovenkamer
---------------------------------------
Oplossing:
select laptop.model, co3.lmodel FROM laptop, ( select laptop.model as lmodel, co2.maker FROM laptop, (select max(ram) as maxram, maker from product, laptop where product.model = laptop.model group by maker) as co2 WHERE co2.maxram = laptop.ram) as co3 WHERE co3.lmodel = laptop.model
PRODUCT (model, manufacturer, type)
LAPTOP (model, ram, speed, ..)
Ik zou een lijst moeten hebben met in de eerste kolom alle laptop modellen en in de tweede kolom het model van de laptop van diezelfde manufacturer met het meeste ram. SQL/PSM is geen optie, UDT's eventueel wél.
PRODUCT
1001 A laptop
1002 A laptop
1003 B laptop
1004 B pc
LAPTOP
1001 256(MB) 2.2(Ghz)
1002 512(MB) 2.4(Ghz)
1003 256(MB) 2.0(Ghz)
dan moet 'k krijgen
1001 1002
1002 1002
1003 1003
Zou iemand mij kunnen helpen? 't Zit vast in de bovenkamer

---------------------------------------
Oplossing:
select laptop.model, co3.lmodel FROM laptop, ( select laptop.model as lmodel, co2.maker FROM laptop, (select max(ram) as maxram, maker from product, laptop where product.model = laptop.model group by maker) as co2 WHERE co2.maxram = laptop.ram) as co3 WHERE co3.lmodel = laptop.model
[ Voor 40% gewijzigd door BartBlackMagic op 22-10-2009 21:01 ]