Kirjautuminen

Haku

Tehtävät

Keskustelu: Ohjelmointikysymykset: [MS SQL] Case no found

K_L [12.11.2009 10:03:18]

#

Terve,

Haen taulusta tietoa seuraavasti

Tyo.id:tä vastaan historia taulusta löytyy x-määrä rivejä.

select tyo.id, A.aika, B.aika C.aika from tyo, historia A, historia B, historia C where A.toiminto = 1 and A.id = tyo.id and B.toiminto = 2 and B.id = tyo.id and C.toiminto = 3 and C.id = tyo.id;

Tämä toimii siis hyvin, ja historia taulusta löytyvät toimintojen tekoajat. Nyt ongelmaksi muodostuu tilanne, jossa esim. toiminto 1 on jätetty tekemättä.

CASE WHEN A.aika IS NULL THEN '0' ELSE A.aika END

Mutta tässä tapauksessahan tuo kenttä ei ole NULL, vaan kyistä ehtoa ei löydy.

Osaisiko joku kertoa, miten tämän asian saisi toteutettua. Kun A, B tai C:ltä puuttuu toiminto.

Metabolix [12.11.2009 19:51:33]

#

Liitä taulut LEFT JOINilla, niin puuttuviin sarakkeisiin tulee NULL.

SELECT tyo.id, a.aika, b.aika, c.aika
FROM tyo
LEFT JOIN historia AS a ON a.id = tyo.id AND a.toiminto = 1
LEFT JOIN historia AS b ON b.id = tyo.id AND b.toiminto = 2
LEFT JOIN historia AS c ON c.id = tyo.id AND c.toiminto = 3

K_L [14.11.2009 13:42:41]

#

Kiitos,

Nyt haku toimii hyvin.

Vastaus

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

Tietoa sivustosta