Kirjautuminen

Haku

Tehtävät

Keskustelu: Ohjelmointikysymykset: SQL ongelmia

AbuRamal [14.02.2020 14:26:37]

#

Pitäs suorittaa seuraavanlainen tehtävä

Listaa kaikki elokuvat, niiden ohjaajien nimet (sukunimi ja etunimi) ja naispääosan roolinimet, joissa Adams-sukuniminen näyttelijä on esittänyt naispääosaa.


Kokeilin tollasella, mutta ongelmana on, että Etunimi ja Sukunimi ovat Naispääosaa näytelleen vaikka niiden pitäisi olla Ohjaajan.¨

SELECT Nimi, Sukunimi, Etunimi, Roolinimi
FROM ELOKUVA, HENKILÖ
WHERE HENKILÖ.Id = Naispääosa AND Sukunimi = 'Adams'

Tässä vielä taulut:

ELOKUVA(Id INT PRIMARY KEY NOT NULL, Nimi TEXT, Valmistusvuosi INT, Miespääosa INT,
Naispääosa INT, Ohjaaja INT, KestoMin INT, Kuvaus TEXT);

HENKILÖ(Id INT PRIMARY KEY NOT NULL, Etunimi TEXT, Sukunimi TEXT, Roolinimi TEXT);

Miten saan Etunimeen ja Sukunimeen ohjaajan tiedot, mutta Roolinimeen Sukunimellä 'Adams' olevan näyttelijän roolin?

Grez [14.02.2020 14:46:01]

#

Tavallaan se, että tietokanta päästää sinut helpolla (eli se suostuu arvaamaan pelkästä kentän nimestä mikä taulu on kyseessä), tekee hommasta sinulle hankalamman hahmottaa.

Sinun pitää ottaa kolme taulua mukaan kyselyyn (henkilö-taulu kahteen kertaan) ja suosittelen määrittämään taulujen väliset sidokset ON:lla heti sidoksen perään mieluummin kuin WHERE:ssä. Näin ne on helpompi hahmottaa

Eli siis kysely voisi olla jotain tyyliin

SELECT
   ELOKUVA.Nimi,
   Ohjaaja.Sukunimi,
   Ohjaaja.Eunimi,
   Nais.Roolinimi
FROM
   ELOKUVA
   JOIN HENKILÖ Ohjaaja ON ELOKUVA.Ohjaaja=Ohjaaja.Id
   JOIN HENKILÖ Nais ON ELOKUVA.Naispääosa=Nais.Id
WHERE
   Nais.Sukunimi = 'Adams';

AbuRamal [14.02.2020 14:53:46]

#

Kiitos, nyt hahmotin mistä on kysymys.

Vastaus

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

Tietoa sivustosta