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.
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
Kiitos,
Nyt haku toimii hyvin.
Aihe on jo aika vanha, joten et voi enää vastata siihen.