Haluan tehdä Access-tietokantaan SQL-kyselyn, joka hakee tietylle henkilölle Henkilot-taulusta mjat "HenkiloID ja Etusukunimi" sekä yhdistää Tutkimukset-taulusta kyseisen henkilön tekemät tutkimukset, jotka listataan. Alla oleva haku hakee ne tutkimukset, joissa on ainoastaan yksi kirjoittaja eli juuri se haettu henkilö. Tarvitsisin kuitenkin sellaisen haun, joka hakee myös ne tutkimukset, joissa on useampi kirjoittaja eli haettu henkilö on osa mjasta Tutkimukset.Kirjoittaja - tulinkohan nyt ymmärretyksi? Miten hakuani tulisi muuttaa? Osaisiko kukaan neuvoa?
SELECT Henkilot.HenkiloID, Henkilot.Etusukunimi, Tutkimukset.Numero, Tutkimukset.Vuosi, Tutkimukset.Otsikko, Tutkimukset.Kirjoittaja, Tutkimukset.PDFlinkki FROM Tutkimukset INNER JOIN Henkilot ON Tutkimukset.Kirjoittaja = Henkilot.Etusukunimi WHERE HenkiloID=ID ORDER BY Numero DESC
Onko siis taulun Tutkimukset kenttä Kirjoittaja merkkijono, joka sisältää kaikki tutkimuksen kirjoittajat?
Tällöin funktio INSTR voisi auttaa hakuehdossa:
ON INSTR(Tutkimukset.Kirjoittaja, Henkilot.Etusukunimi) <> 0
Funktiolle annetaan kaksi merkkijonoa, ja sen palautusarvo kertoo, missä kohdassa toinen merkkijono esiintyy ensimmäisessä. Jos palautusarvo on 0, toinen merkkijono ei esiinny ensimmäisessä.
En valitettavasti voi taata tämän toimivan, sillä minulla ei ole Access-tietokantaa.
Tulevaisuuden kannalta vinkiksi: Tietokanta olisi parempi suunnitella niin, että yhdessä kentässä ei ole kuin yksi tieto. Jos tutkimuksella voi olla monta kirjoittajaa, tarvitaan ylimääräinen taulu, jossa kerrotaan, ketkä kaikki kirjoittajat liittyvät mihinkin tutkimukseen. Tämä suunnittelutapa helpottaa monimutkaisempien kyselyiden laatimista.
Bravo!!!!! Toimii!!!! :-))))
Suuret kiitokset!
Aihe on jo aika vanha, joten et voi enää vastata siihen.