[SQL] query mogelijk?

Pagina: 1
Acties:

Acties:
  • 0 Henk 'm!

  • BartBlackMagic
  • Registratie: December 2003
  • Laatst online: 10-09 08:55
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

[ Voor 40% gewijzigd door BartBlackMagic op 22-10-2009 21:01 ]


Acties:
  • 0 Henk 'm!

  • glmona
  • Registratie: Maart 2005
  • Laatst online: 15-08 06:22
zou het niet in 1 tabel horen met een attribuut producttype?

sowieso, een tabel die laptop heet?

en dan uiteraard een
SQL:
1
select max(ram) from product where producttype = "laptop"

[ Voor 58% gewijzigd door glmona op 22-10-2009 19:42 ]


Acties:
  • 0 Henk 'm!

  • BartBlackMagic
  • Registratie: December 2003
  • Laatst online: 10-09 08:55
De tabelnamen zijn maar voorbeelden :) aan de layout van de tabellen kan niks gewijzigd worden.

Acties:
  • 0 Henk 'm!

  • pedorus
  • Registratie: Januari 2008
  • Niet online
Dit ziet eruit als een groupwise maximum-probleem, dat er een join voor nodig is boeit niet zoveel. Hoe je dat het handigst op kan lossen hangt onder andere van je database af.

Vitamine D tekorten in Nederland | Dodelijk coronaforum gesloten


Acties:
  • 0 Henk 'm!

  • NMe
  • Registratie: Februari 2004
  • Laatst online: 09-09 13:58

NMe

Quia Ego Sic Dico.

Hoe precies koppel je nou producten 1001 en 1002 aan laptop 1002, maar product 1003 aan 1003? Het zal met manufacturer A/B te maken hebben maar dat zie ik niet in je laptoptabel terug. Als je voorbeeld dus analoog is aan wat je écht probeert te doen, dan mist er alvast een veld om op te koppelen. :P

Overigens, wat sla je écht op? Als de verhouding tussen de echt is zoals hier zet ik ook een paar vraagtekens bij het databaseontwerp. Al vermoed ik eerder dat je een ongelukkige analogie hebt gemaakt; kun je niet gewoon zeggen wat je écht probeert te doen? :)

'E's fighting in there!' he stuttered, grabbing the captain's arm.
'All by himself?' said the captain.
'No, with everyone!' shouted Nobby, hopping from one foot to the other.


Acties:
  • 0 Henk 'm!

  • pedorus
  • Registratie: Januari 2008
  • Niet online
NMe schreef op donderdag 22 oktober 2009 @ 22:08:
Hoe precies koppel je nou producten 1001 en 1002 aan laptop 1002, maar product 1003 aan 1003? Het zal met manufacturer A/B te maken hebben maar dat zie ik niet in je laptoptabel terug. Als je voorbeeld dus analoog is aan wat je écht probeert te doen, dan mist er alvast een veld om op te koppelen. :P
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)
join met weglaten compleet overbodige laatste kolom bij product===>
1001 256(MB) 2.2(Ghz) A
1002 512(MB) 2.4(Ghz) A
1003 256(MB) 2.0(Ghz) B
En hierop vragen we per nummer het eerste nummer van de nummers gesorteerd op ram (desc) van dezelfde producent op:
1001 1002
1002 1002
1003 1003
Ik zie geen probleem met koppelen. ;)

Overigens zie ik inmiddels ook een oplossing in de TS staan, waarvan ik vermoed dat die nog een foutje bevat (onvoldoende checks of makers overeenkomen).

Vitamine D tekorten in Nederland | Dodelijk coronaforum gesloten

Pagina: 1