Vinnaren i pepparkakshustävlingen!
2012-01-23, 22:20
  #1
Medlem
Haller pa att ta igen lite förlorad SQL-kunskap och gör en hyffsat enkel övning. Jag har tyvärr stött pa ett problem som jag behöver lite hjälp med:

Jag ska ta reda pa vilka delar i tabellen parts som väger mer än en röd box. Först med en nästlad fraga:

select pname, color from parts where weight > (select weight from parts where pname = 'box' and color = 'red');

Nästa uppgift är att formulera fragan utan nästlad fraga. Nan som har ett förslag?

Tackar!
Citera
2012-01-23, 22:40
  #2
Medlem
Fantomsmaertas avatar
man skulle ju kunna tänka sig en variable som man tilldelar värdet man är ute efter mha select >
Citera
2012-01-24, 00:31
  #3
Medlem
gadzooxs avatar
Citat:
Ursprungligen postat av Fantomsmaerta
man skulle ju kunna tänka sig en variable som man tilldelar värdet man är ute efter mha select >
Är det inte exakt det h*n gör, bara det att h*n inte lagrar värdet i en variabel utan använder det direkt?



TS: Finns det ens något annat snyggt sätt att göra det? Det enda jag kommer på är att joina in den röda boxen på varje rad...

Kod:
select p.pname, p.color, p.weight
from parts p
join parts box on box.pname = 'box' and box.color = 'red'
where p.weight > box.weight
Hyfsat fult...
Citera
2012-01-24, 09:42
  #4
Medlem
Fantomsmaertas avatar
Citat:
Ursprungligen postat av gadzoox
Är det inte exakt det h*n gör, bara det att h*n inte lagrar värdet i en variabel utan använder det direkt?



TS: Finns det ens något annat snyggt sätt att göra det? Det enda jag kommer på är att joina in den röda boxen på varje rad...

Kod:
select p.pname, p.color, p.weight
from parts p
join parts box on box.pname = 'box' and box.color = 'red'
where p.weight > box.weight
Hyfsat fult...

Tja som jag uppfattade det var syftet att skriva en query som inte ar nastlad. Finns ju inte jattemanga satt att astadkomma det ts vill ha da
Citera
2012-01-24, 15:37
  #5
Medlem
En till variant (distinct: om man vill/om det är flera red box):
select [distinct] p2.pname, p2.color, p2.weight
from parts p1,parts p2
where p1.pname = 'box' and p1.color = 'red'
and p2.weight > p1.weight

Subquery alternativ fungerar inte om det finns flera 'red box'
Join eller min lösning ger flera gånger samma box om man inte använder
distinct och det är flera 'red box' med lägre vikt.
Citera
2012-01-24, 17:18
  #6
Medlem
gadzooxs avatar
Citat:
Ursprungligen postat av casimiro
En till variant (distinct: om man vill/om det är flera red box):
select [distinct] p2.pname, p2.color, p2.weight
from parts p1,parts p2
where p1.pname = 'box' and p1.color = 'red'
and p2.weight > p1.weight

Subquery alternativ fungerar inte om det finns flera 'red box'
Join eller min lösning ger flera gånger samma box om man inte använder
distinct och det är flera 'red box' med lägre vikt.
Alltså en join eller en....join

I övrigt helt korrekt.
Citera

Stöd Flashback

Flashback finansieras genom donationer från våra medlemmar och besökare. Det är med hjälp av dig vi kan fortsätta erbjuda en fri samhällsdebatt. Tack för ditt stöd!

Stöd Flashback