Kirjautuminen

Haku

Tehtävät

Keskustelu: Ohjelmointikysymykset: SQL yhteisten tekijöiden haku

Anne [17.06.2012 10:34:25]

#

Hei,
minulla on yksinkertainen tehtävä, joka pitäisi tehdä SQL-kyselyllä, mutta päässä täydellinen blackout.

Yksikertaistettu esimerkki:
Taulussa on rivejä, joissa on paritettu asioita tyyliin tätä tuotetta on väreissä yks,kaks ja kolme (kaikki parit eri riveinä), ja pitäisi hakea tietyistä tuotteista ne, joita saa samoissa väreissä.

Kannassa on siis esim.

paita;punainen
paita;keltainen;
paita;musta

sukat;vihreä
sukat;musta
sukat;keltainen

housut;siniset
housut;mustat

hame;punainen
hame;keltainen

Sitten kysytään: hae missä samoissa väreissä saa paitoja ja sukkia? Vastaus on keltainen ja musta, muta miten se kysytään sql:llä? Vastaukseen ei saa tulla sellaiset värit, joita ei ole molemmista (esim. vaikka paitaa saa punaisena, mutta sukkia ei, niin punaista ei tuoda). Kysyttäviä tuotteita voi olla yksi-monta. Löydettäviä värejä voi olla 1-monta (huonossa tapauksessa myös 0).

Mistä kohtaa rupean rakentamaan kyselyä?
TIA, -A-

Grez [17.06.2012 10:52:19]

#

lainaus:

missä samoissa väreissä saa paitoja ja sukkia?

select
  a.väri
from
  tuote a join
  tuote b on a.väri=b.väri
where
  a.tyyppi='paita' and
  b.tyyppi='sukka'

Anne [17.06.2012 11:18:53]

#

Kiitos nopeasta vastauksesta.

Jos oikein oivallan, niin teen tästä dynaamisen kyselyn ja tuotteiden lisääntyessä lisään jokaisesta tuotteesta
from-osaan: join x on a.väri=x.väri ja
where-osaan: and x.tyyppi='x:n tyyppi'.

select
a.väri
from
tuote a
join tuote b on a.väri=b.väri join
join tuote c on a.väri=c.väri
where
a.tyyppi='paita'
and b.tyyppi='sukka'
and c.tyyppi='housut'

Menen kokeilemaan.

Grez [17.06.2012 11:50:37]

#

Juu, tuossa on yksi join liikaa (join join) mutta muuten ihan bueno.

Vastaus

Aihe on jo aika vanha, joten et voi enää vastata siihen.

Tietoa sivustosta