tämä hakulause tulostaa kaikkien taulukoiden KAIKKI tiedot, mutta kun haluaisin että se tulostaisi vain hakusanalla etsityn tiedon. Mikä tossa hakulauseessa mättää...? Näkisikö joku samantien...
------------------
if (!($rs = mysql_query("SELECT taulukko1.nimi, taulukko2.nimi, taulukko3.nimi, taulukko1.ryhma, taulukko2.ryhma, taulukko3.ryhma, taulukko1.luokka, taulukko2.luokka, taulukko3.luokka FROM taulukko1, taulukko2, taulukko3 WHERE nimi='{$_POST['nimi']}' = taulukko1.nimi = taulukko2.nimi = taulukko3.nimi"))) error("Tietokantahaku epäonnistui.");
------------------
if (!($rs = mysql_query("SELECT taulukko1.nimi, taulukko2.nimi, taulukko3.nimi, taulukko1.ryhma, taulukko2.ryhma, taulukko3.ryhma, taulukko1.luokka, taulukko2.luokka, taulukko3.luokka FROM taulukko1, taulukko2, taulukko3 WHERE nimi='{$_POST['nimi']}' = taulukko1.nimi = taulukko2.nimi = taulukko3.nimi"))) error("Tietokantahaku epäonnistui.");
Vastaukset 6
Vanhimmat
yritän siis että hakusanalla etsitään tietoa kaikista taulukoista, mutta ei siis KAIKKEA TIETOA KERRALLA, vaan vain sen mihin hakusana viittaa...
Relaatiokantojen perusteissahan sanotaan, että tietoa ei saa kopioida, johtaa jne. Tässä on siis menty jo siinä mäkeen, että jannun nimi on kolmessa taulussa.
Noiden kolmen taulun ominaisuudet näyttää olevan täysin samanlaisia, niin miksi sitten on olemassa kolme taulua? Nehän pitäis kaikki olla saman taulun rivejä, jos niillä on samat atribuutit.
En oo nyt ihan varma tosta WHERE ehdon putkituksesta tolleen. Hieman epäilyttää.
Käytä mieluummin
WHERE '{$_POST['nimi']}' = taulukko1.nimi AND '{$_POST['nimi']}' = taulukko2.nimi AND '{$_POST['nimi']}' = taulukko3.nimi;
että kyse on kursseista. yksi taulukko on yksi kurssi ja jannu on osallistunut kaikkiin kolmeen kurssiin....en osannut paremmin sitä tehdä...kyseessä siis kurssi-listat
tarkoituksena on kasvattaa taulukkoja...kursseja on kymmeniä...ja tarkoituksena on vain hakea tietoa mille kaikille kursseille kukin kurssilainen on osallistunut.
Sulla pitäis olla Opiskelija-taulu, Kurssi-taulu ja Kurssikerta-taulu.
Opiskelija-taulussa on opiskelijanumero, nimi, osoite, puhelinnumero. Pääavain on opiskelijanumero
Kurssi-taulussa on aina jonkin kurssin yleiset tiedot. Aineen nimi, ainenumero, laajuus opintopisteinä, oppikirjat, vastuuopettaja. Pääavain on ainenumero.
Kurssikerta-taulussa on aina yhden kurssiosallistumisen tiedot. Opiskelijanumero, ainenumero, ajankohta, sijainti. Pääavaimena yhdistetty opiskelijanumero, ainenumero ja ajankohta.
Sitten voit helposti etsiä kaikki kurssit, joilla opiskelija on ollut. Tekemällä aina uusi taulu kurssia varten rikotaan kaikkia mahdollisia sääntöjä vastaan ja saadaan vielä kierrettyä kaikki mitä tietokannoilla oikeasti saadaan aikaan.
mysql-kantaan Opiskelija, Kurssi ja Kursikerta. Kaikki tyyppiä innodb. Nyt ne kursit saa helposti esiin ja ei oo väliä kuinka monta kurssia tulee lisää.
select distinct Opiskelija.nimi as Nimi, Kurssi.nimi as Kurssi FROM Opiskelija, Kurssi, Kurssikerta WHERE Opiskelija.ID = Kurssikerta.opiskelija_id;
Nimi___________Kurssi
Tauno Miettinen Kemia 1
Tauno Miettinen Kemia 2
Tauno Miettinen Matematiikka 1
Tauno Miettinen Sähkötekniikka 1