Jotenkin järkevästi...

tehtyä...

On kolme taulua, opiskelijat, kurssit ja ilmoittautumiset:

Opiskelija (id, nimi);
Kurssi (id, nimi);
Ilmoittautumiset (id, id_kurssi, id_opiskelija);


Nyt pitäisi jotenkin järkevästi tulostaa luettelo opiskelijoista ja mille kursseille kukin on ilmoittautunut, jotenkin näin:

Matti Virtanen - matem, ruotsi, liik, kuv, hist
Katri Savolainen - hist, matem, usk, eng
Anna Ström - ruotsi, eng, matem
jne...

Miten tämä onnistuisi mahdollisimman "nopeasti/tehokkaasti"

Yksi vaihtoehto on tietenkin hakea ensin kaikki opiskelijat ja sitten jokaisen opiskelijan ilmoittautumiset, mutta silloin kyselyiden määrä olisi aivan hirveä. Onko parempia ideoita?

Opiskelijaoita ja ilmoittautumisia on tosi paljon!!!

2

329

    Vastaukset

    Anonyymi (Kirjaudu / Rekisteröidy)
    5000
    • I. Proqatlis

      Kouluesimerkki moni-moneen -relaatiosta, joka puretaan luomalla opiskelijoiden ja kurssien väliin ilmoittautumiset-taulu. (Miksi tuossa ilmoittautumiset-taulussa on sarake 'id'? Ei sitä tarvita.)

      Tauluilla tulee olla uniikit indeksit, jotka tässä tapauksessa koostuvat id-sarakkeista. Ilmoittautumiset-taulun uniikki indeksi muodostuu sen molemmista sarakkeista. Seuraava SQL-operaatio on aika tehokas:

      select
          opiskelija.nimi, kurssi.nimi
      from
          opiskelija, kurssi, ilmoittautumiset
      where
          ilmoittautumiset.id_opiskelija = opiskelija.id and
          ilmoittautumiset.id_kurssi = kurssi.id
      order by
          ilmoittautumiset.id_opiskelija;


      Ratkaisinko kotiläksysi ;-)

      • tohlo

        > (Miksi tuossa ilmoittautumiset-taulussa on
        > sarake 'id'? Ei sitä tarvita.)

        (En ole alkuperäinen kysyjä.)

        Vaikkapa siksi, että opiskelija voisi ilmoittautua samalle kurssille useampaan kertaan. Laiska opiskelija kun ei heti pääse kurssista läpi. ;-) Tosin arvosteluita ym. ei tässä ehkä haluttukaan tallentaa eli mahdollisesti useampaa kurssi-henkilö -paria ei tarvitse salliakaan, joten tässä mielessä olisit siis oikeassa.

        Niin, ja vastauksesi ei ilmaissut sitä, että sql-kyselyn tulos (1. rivi: "Matti, usk.", 2. rivi: "Matti, eng.", jne) pitää käyttöliittymässä näyttämistä varten purkaa vielä kysyjän haluamaan "näyttävämpään" muotoon ("Matti - usk, eng, hist"). Tämä tosin taisi olla jo itsestään selvää. ;)


    Ketjusta on poistettu 0 sääntöjenvastaista viestiä.

    Luetuimmat keskustelut

    1. Rakas

      Eihän se tietysti minulle kuulu, mutta missä sinä olet? 😠
      Ikävä
      50
      1447
    2. Pidit itseäsi liian

      Vanhana minulle? Niinkö?
      Ikävä
      59
      1381
    3. SDP:n lyhyt selviytymisopas

      1. Komitea on vastaus, oli kysymys mikä tahansa Jos maailma on muuttumassa tai jossain palaa, demari ei hätiköi. Ensin p
      Maailman menoa
      10
      988
    4. Joko olet luovuttanut

      Mun suhteen?
      Ikävä
      60
      791
    5. Haluaisitko oikeasti

      Vakavampaa välillemme vai tämäkö riittää
      Ikävä
      49
      774
    6. Mitä se olisi

      Jos sinä mies saisit sanoa kaivatullesi mitä vain juuri nyt. Ilman mitään seuraamuksia yms. Niin mitä sanoisit?
      Ikävä
      41
      755
    7. Nanna Karalahti :Paljastus bisneksistä Jere Karalahden kanssa!

      Ottanut yhteyttä seiskalehden toimittajaan ja kertonut totuuden yhteisestä Herotreeni-nimisestä verkkovalmenuksesta.
      Kotimaiset julkkisjuorut
      118
      607
    8. Sotekeskus

      Aloite on hyvä, kiitokset siitä. Mutta jos olette yhtään seuranneet hyvinvointialueen kokouksia niin sehän on jo nuijit
      Ähtäri
      32
      587
    9. Toivoisitko

      Toivoisitko, että kaivattusi olisi introvertimpi tai extrovertimpi? Itsenäinen tai tarvitsisi enemmän apua/sinua? Osoit
      Ikävä
      81
      582
    10. Sinunkin pitää jättää

      Se kaivattusi rauhaan.
      Ikävä
      38
      556
    Aihe