- Jos emme kerro miten taulut liittyvät toisiinsa niin saamme
kaikki mahdolliset yhdistelmät eli paljon vääriä.
VÄÄRIN
SELECT etunimi, sukunimi, kurssi, paivamaara, arvosana
FROM Opiskelija, Tenttii
| etunimi | sukunimi | kurssi | paivamaara | arvosana |
| Tommi | Lahtonen | TIE150 | 1.1.1997 | 3 |
| Tommi | Lahtonen | TIE150 | 1.1.1998 | 1.2.1975 |
| Tommi | Lahtonen | TIE150 | 1.1.1999 | 2.5.2002 |
| Tommi | Lahtonen | TIE150 | 1.1.1997 | 1.2.2025 |
| Tommi | Lahtonen | TIE150 | 1.1.1997 | 2 |
| Tommi | Lahtonen | TIE150 | 1.3.1997 | 1.2.1975 |
| Tommi | Lahtonen | TIE150 | 1.1.1997 | 1.1.1975 |
| Tommi | Lahtonen | TIE150 | 1.1.1997 | 1.5.2002 |
| Tommi | Lahtonen | TIE150 | 1.2.1997 | 1.2.2025 |
| Tommi | Lahtonen | TIE160 | 1.1.2000 | 2 |
| Tommi | Lahtonen | TIE160 | 1.1.2000 | 1.1.1975 |
| Tommi | Lahtonen | TIE160 | 1.1.2000 | 1.5.2002 |
| Tommi | Lahtonen | TIE160 | 1.1.2000 | 1.1.2025 |
| Tommi | Lahtonen | TIE160 | 1.1.2000 | 3 |
| Tommi | Lahtonen | TIE160 | 1.1.2000 | 1.2.1975 |
| Tommi | Lahtonen | TIE160 | 1.1.2000 | 2.5.2002 |
| Tommi | Lahtonen | TIE110 | 1.1.2000 | 2 |
| Tommi | Lahtonen | TIE110 | 1.2.2000 | 0 |
| Tommi | Lahtonen | TIE110 | 1.3.2000 | 2 |
| Tommi | Lahtonen | TIE110 | 1.4.2000 | 0 |
| Tommi | Lahtonen | TIE110 | 1.5.2000 | 3 |
| Tommi | Lahtonen | TIE110 | 1.6.2000 | 0 |
| Tommi | Lahtonen | TIE110 | 1.7.2000 | 0 |
| Tommi | Lahtonen | TIE101 | 1.1.2000 | 0 |
| Tommi | Lahtonen | TIE101 | 1.1.2000 | 1.1.1975 |
| Tommi | Lahtonen | TIE001 | 1.1.2000 | 1.5.2002 |
| Tommi | Lahtonen | TIE001 | 1.1.2000 | 1.1.2025 |
| Tommi | Lahtonen | TIE001 | 1.1.2000 | 0 |
| Tommi | Lahtonen | TIE120 | 1.1.2000 | 0 |
| Tommi | Lahtonen | TIE120 | 1.1.2000 | 2.5.2002 |
| Tommi | Lahtonen | TIE101 | 1.2.2000 | 1 |
| Tommi | Lahtonen | TIE101 | 1.2.2000 | 1.2.1975 |
| Tommi | Lahtonen | TIE001 | 1.2.2000 | 2.5.2002 |
| Tommi | Lahtonen | TIE001 | 1.2.2000 | 1.2.2025 |
| Tommi | Lahtonen | TIE001 | 1.2.2000 | 2 |
| Tommi | Lahtonen | TIE120 | 1.2.2000 | 3 |
| Tommi | Lahtonen | TIE120 | 1.2.2000 | 1.2.1975 |
| Petri | Heinonen | TIE150 | 1.1.1997 | 3 |
| Petri | Heinonen | TIE150 | 1.1.1998 | 1.2.1975 |
| Petri | Heinonen | TIE150 | 1.1.1999 | 2.5.2002 |
| Petri | Heinonen | TIE150 | 1.1.1997 | 1.2.2025 |
| Petri | Heinonen | TIE150 | 1.1.1997 | 2 |
| Petri | Heinonen | TIE150 | 1.3.1997 | 1.2.1975 |
| Petri | Heinonen | TIE150 | 1.1.1997 | 1.1.1975 |
| Petri | Heinonen | TIE150 | 1.1.1997 | 1.5.2002 |
| Petri | Heinonen | TIE150 | 1.2.1997 | 1.2.2025 |
| Petri | Heinonen | TIE160 | 1.1.2000 | 2 |
| Petri | Heinonen | TIE160 | 1.1.2000 | 1.1.1975 |
| Petri | Heinonen | TIE160 | 1.1.2000 | 1.5.2002 |
| Petri | Heinonen | TIE160 | 1.1.2000 | 1.1.2025 |
| Petri | Heinonen | TIE160 | 1.1.2000 | 3 |
| Petri | Heinonen | TIE160 | 1.1.2000 | 1.2.1975 |
| Petri | Heinonen | TIE160 | 1.1.2000 | 2.5.2002 |
| Petri | Heinonen | TIE110 | 1.1.2000 | 2 |
| Petri | Heinonen | TIE110 | 1.2.2000 | 0 |
| Petri | Heinonen | TIE110 | 1.3.2000 | 2 |
| Petri | Heinonen | TIE110 | 1.4.2000 | 0 |
| Petri | Heinonen | TIE110 | 1.5.2000 | 3 |
| Petri | Heinonen | TIE110 | 1.6.2000 | 0 |
| Petri | Heinonen | TIE110 | 1.7.2000 | 0 |
| Petri | Heinonen | TIE101 | 1.1.2000 | 0 |
| Petri | Heinonen | TIE101 | 1.1.2000 | 1.1.1975 |
| Petri | Heinonen | TIE001 | 1.1.2000 | 1.5.2002 |
| Petri | Heinonen | TIE001 | 1.1.2000 | 1.1.2025 |
| Petri | Heinonen | TIE001 | 1.1.2000 | 0 |
| Petri | Heinonen | TIE120 | 1.1.2000 | 0 |
| Petri | Heinonen | TIE120 | 1.1.2000 | 2.5.2002 |
| Petri | Heinonen | TIE101 | 1.2.2000 | 1 |
| Petri | Heinonen | TIE101 | 1.2.2000 | 1.2.1975 |
| Petri | Heinonen | TIE001 | 1.2.2000 | 2.5.2002 |
| Petri | Heinonen | TIE001 | 1.2.2000 | 1.2.2025 |
| Petri | Heinonen | TIE001 | 1.2.2000 | 2 |
| Petri | Heinonen | TIE120 | 1.2.2000 | 3 |
| Petri | Heinonen | TIE120 | 1.2.2000 | 1.2.1975 |
| Teemu | Tieteilijä | TIE150 | 1.1.1997 | 3 |
| Teemu | Tieteilijä | TIE150 | 1.1.1998 | 1.2.1975 |
| Teemu | Tieteilijä | TIE150 | 1.1.1999 | 2.5.2002 |
| Teemu | Tieteilijä | TIE150 | 1.1.1997 | 1.2.2025 |
| Teemu | Tieteilijä | TIE150 | 1.1.1997 | 2 |
| Teemu | Tieteilijä | TIE150 | 1.3.1997 | 1.2.1975 |
| Teemu | Tieteilijä | TIE150 | 1.1.1997 | 1.1.1975 |
| Teemu | Tieteilijä | TIE150 | 1.1.1997 | 1.5.2002 |
| Teemu | Tieteilijä | TIE150 | 1.2.1997 | 1.2.2025 |
| Teemu | Tieteilijä | TIE160 | 1.1.2000 | 2 |
| Teemu | Tieteilijä | TIE160 | 1.1.2000 | 1.1.1975 |
| Teemu | Tieteilijä | TIE160 | 1.1.2000 | 1.5.2002 |
| Teemu | Tieteilijä | TIE160 | 1.1.2000 | 1.1.2025 |
| Teemu | Tieteilijä | TIE160 | 1.1.2000 | 3 |
| Teemu | Tieteilijä | TIE160 | 1.1.2000 | 1.2.1975 |
| Teemu | Tieteilijä | TIE160 | 1.1.2000 | 2.5.2002 |
| Teemu | Tieteilijä | TIE110 | 1.1.2000 | 2 |
| Teemu | Tieteilijä | TIE110 | 1.2.2000 | 0 |
| Teemu | Tieteilijä | TIE110 | 1.3.2000 | 2 |
| Teemu | Tieteilijä | TIE110 | 1.4.2000 | 0 |
| Teemu | Tieteilijä | TIE110 | 1.5.2000 | 3 |
| Teemu | Tieteilijä | TIE110 | 1.6.2000 | 0 |
| Teemu | Tieteilijä | TIE110 | 1.7.2000 | 0 |
| Teemu | Tieteilijä | TIE101 | 1.1.2000 | 0 |
| Teemu | Tieteilijä | TIE101 | 1.1.2000 | 1.1.1975 |
| Teemu | Tieteilijä | TIE001 | 1.1.2000 | 1.5.2002 |
| Teemu | Tieteilijä | TIE001 | 1.1.2000 | 1.1.2025 |
| Teemu | Tieteilijä | TIE001 | 1.1.2000 | 0 |
| Teemu | Tieteilijä | TIE120 | 1.1.2000 | 0 |
| Teemu | Tieteilijä | TIE120 | 1.1.2000 | 2.5.2002 |
| Teemu | Tieteilijä | TIE101 | 1.2.2000 | 1 |
| Teemu | Tieteilijä | TIE101 | 1.2.2000 | 1.2.1975 |
| Teemu | Tieteilijä | TIE001 | 1.2.2000 | 2.5.2002 |
| Teemu | Tieteilijä | TIE001 | 1.2.2000 | 1.2.2025 |
| Teemu | Tieteilijä | TIE001 | 1.2.2000 | 2 |
| Teemu | Tieteilijä | TIE120 | 1.2.2000 | 3 |
| Teemu | Tieteilijä | TIE120 | 1.2.2000 | 1.2.1975 |
| Taina | Tieteilijä | TIE150 | 1.1.1997 | 3 |
| Taina | Tieteilijä | TIE150 | 1.1.1998 | 1.2.1975 |
| Taina | Tieteilijä | TIE150 | 1.1.1999 | 2.5.2002 |
| Taina | Tieteilijä | TIE150 | 1.1.1997 | 1.2.2025 |
| Taina | Tieteilijä | TIE150 | 1.1.1997 | 2 |
| Taina | Tieteilijä | TIE150 | 1.3.1997 | 1.2.1975 |
| Taina | Tieteilijä | TIE150 | 1.1.1997 | 1.1.1975 |
| Taina | Tieteilijä | TIE150 | 1.1.1997 | 1.5.2002 |
| Taina | Tieteilijä | TIE150 | 1.2.1997 | 1.2.2025 |
| Taina | Tieteilijä | TIE160 | 1.1.2000 | 2 |
| Taina | Tieteilijä | TIE160 | 1.1.2000 | 1.1.1975 |
| Taina | Tieteilijä | TIE160 | 1.1.2000 | 1.5.2002 |
| Taina | Tieteilijä | TIE160 | 1.1.2000 | 1.1.2025 |
| Taina | Tieteilijä | TIE160 | 1.1.2000 | 3 |
| Taina | Tieteilijä | TIE160 | 1.1.2000 | 1.2.1975 |
| Taina | Tieteilijä | TIE160 | 1.1.2000 | 2.5.2002 |
| Taina | Tieteilijä | TIE110 | 1.1.2000 | 2 |
| Taina | Tieteilijä | TIE110 | 1.2.2000 | 0 |
| Taina | Tieteilijä | TIE110 | 1.3.2000 | 2 |
| Taina | Tieteilijä | TIE110 | 1.4.2000 | 0 |
| Taina | Tieteilijä | TIE110 | 1.5.2000 | 3 |
| Taina | Tieteilijä | TIE110 | 1.6.2000 | 0 |
| Taina | Tieteilijä | TIE110 | 1.7.2000 | 0 |
| Taina | Tieteilijä | TIE101 | 1.1.2000 | 0 |
| Taina | Tieteilijä | TIE101 | 1.1.2000 | 1.1.1975 |
| Taina | Tieteilijä | TIE001 | 1.1.2000 | 1.5.2002 |
| Taina | Tieteilijä | TIE001 | 1.1.2000 | 1.1.2025 |
| Taina | Tieteilijä | TIE001 | 1.1.2000 | 0 |
| Taina | Tieteilijä | TIE120 | 1.1.2000 | 0 |
| Taina | Tieteilijä | TIE120 | 1.1.2000 | 2.5.2002 |
| Taina | Tieteilijä | TIE101 | 1.2.2000 | 1 |
| Taina | Tieteilijä | TIE101 | 1.2.2000 | 1.2.1975 |
| Taina | Tieteilijä | TIE001 | 1.2.2000 | 2.5.2002 |
| Taina | Tieteilijä | TIE001 | 1.2.2000 | 1.2.2025 |
| Taina | Tieteilijä | TIE001 | 1.2.2000 | 2 |
| Taina | Tieteilijä | TIE120 | 1.2.2000 | 3 |
| Taina | Tieteilijä | TIE120 | 1.2.2000 | 1.2.1975 |
| Kaisa | Kielinero | TIE150 | 1.1.1997 | 3 |
| Kaisa | Kielinero | TIE150 | 1.1.1998 | 1.2.1975 |
| Kaisa | Kielinero | TIE150 | 1.1.1999 | 2.5.2002 |
| Kaisa | Kielinero | TIE150 | 1.1.1997 | 1.2.2025 |
| Kaisa | Kielinero | TIE150 | 1.1.1997 | 2 |
| Kaisa | Kielinero | TIE150 | 1.3.1997 | 1.2.1975 |
| Kaisa | Kielinero | TIE150 | 1.1.1997 | 1.1.1975 |
| Kaisa | Kielinero | TIE150 | 1.1.1997 | 1.5.2002 |
| Kaisa | Kielinero | TIE150 | 1.2.1997 | 1.2.2025 |
| Kaisa | Kielinero | TIE160 | 1.1.2000 | 2 |
| Kaisa | Kielinero | TIE160 | 1.1.2000 | 1.1.1975 |
| Kaisa | Kielinero | TIE160 | 1.1.2000 | 1.5.2002 |
| Kaisa | Kielinero | TIE160 | 1.1.2000 | 1.1.2025 |
| Kaisa | Kielinero | TIE160 | 1.1.2000 | 3 |
| Kaisa | Kielinero | TIE160 | 1.1.2000 | 1.2.1975 |
| Kaisa | Kielinero | TIE160 | 1.1.2000 | 2.5.2002 |
| Kaisa | Kielinero | TIE110 | 1.1.2000 | 2 |
| Kaisa | Kielinero | TIE110 | 1.2.2000 | 0 |
| Kaisa | Kielinero | TIE110 | 1.3.2000 | 2 |
| Kaisa | Kielinero | TIE110 | 1.4.2000 | 0 |
| Kaisa | Kielinero | TIE110 | 1.5.2000 | 3 |
| Kaisa | Kielinero | TIE110 | 1.6.2000 | 0 |
| Kaisa | Kielinero | TIE110 | 1.7.2000 | 0 |
| Kaisa | Kielinero | TIE101 | 1.1.2000 | 0 |
| Kaisa | Kielinero | TIE101 | 1.1.2000 | 1.1.1975 |
| Kaisa | Kielinero | TIE001 | 1.1.2000 | 1.5.2002 |
| Kaisa | Kielinero | TIE001 | 1.1.2000 | 1.1.2025 |
| Kaisa | Kielinero | TIE001 | 1.1.2000 | 0 |
| Kaisa | Kielinero | TIE120 | 1.1.2000 | 0 |
| Kaisa | Kielinero | TIE120 | 1.1.2000 | 2.5.2002 |
| Kaisa | Kielinero | TIE101 | 1.2.2000 | 1 |
| Kaisa | Kielinero | TIE101 | 1.2.2000 | 1.2.1975 |
| Kaisa | Kielinero | TIE001 | 1.2.2000 | 2.5.2002 |
| Kaisa | Kielinero | TIE001 | 1.2.2000 | 1.2.2025 |
| Kaisa | Kielinero | TIE001 | 1.2.2000 | 2 |
| Kaisa | Kielinero | TIE120 | 1.2.2000 | 3 |
| Kaisa | Kielinero | TIE120 | 1.2.2000 | 1.2.1975 |
| Keijo | Kirjailija | TIE150 | 1.1.1997 | 3 |
| Keijo | Kirjailija | TIE150 | 1.1.1998 | 1.2.1975 |
| Keijo | Kirjailija | TIE150 | 1.1.1999 | 2.5.2002 |
| Keijo | Kirjailija | TIE150 | 1.1.1997 | 1.2.2025 |
| Keijo | Kirjailija | TIE150 | 1.1.1997 | 2 |
| Keijo | Kirjailija | TIE150 | 1.3.1997 | 1.2.1975 |
| Keijo | Kirjailija | TIE150 | 1.1.1997 | 1.1.1975 |
| Keijo | Kirjailija | TIE150 | 1.1.1997 | 1.5.2002 |
| Keijo | Kirjailija | TIE150 | 1.2.1997 | 1.2.2025 |
| Keijo | Kirjailija | TIE160 | 1.1.2000 | 2 |
| Keijo | Kirjailija | TIE160 | 1.1.2000 | 1.1.1975 |
| Keijo | Kirjailija | TIE160 | 1.1.2000 | 1.5.2002 |
| Keijo | Kirjailija | TIE160 | 1.1.2000 | 1.1.2025 |
| Keijo | Kirjailija | TIE160 | 1.1.2000 | 3 |
| Keijo | Kirjailija | TIE160 | 1.1.2000 | 1.2.1975 |
| Keijo | Kirjailija | TIE160 | 1.1.2000 | 2.5.2002 |
| Keijo | Kirjailija | TIE110 | 1.1.2000 | 2 |
| Keijo | Kirjailija | TIE110 | 1.2.2000 | 0 |
| Keijo | Kirjailija | TIE110 | 1.3.2000 | 2 |
| Keijo | Kirjailija | TIE110 | 1.4.2000 | 0 |
| Keijo | Kirjailija | TIE110 | 1.5.2000 | 3 |
| Keijo | Kirjailija | TIE110 | 1.6.2000 | 0 |
| Keijo | Kirjailija | TIE110 | 1.7.2000 | 0 |
| Keijo | Kirjailija | TIE101 | 1.1.2000 | 0 |
| Keijo | Kirjailija | TIE101 | 1.1.2000 | 1.1.1975 |
| Keijo | Kirjailija | TIE001 | 1.1.2000 | 1.5.2002 |
| Keijo | Kirjailija | TIE001 | 1.1.2000 | 1.1.2025 |
| Keijo | Kirjailija | TIE001 | 1.1.2000 | 0 |
| Keijo | Kirjailija | TIE120 | 1.1.2000 | 0 |
| Keijo | Kirjailija | TIE120 | 1.1.2000 | 2.5.2002 |
| Keijo | Kirjailija | TIE101 | 1.2.2000 | 1 |
| Keijo | Kirjailija | TIE101 | 1.2.2000 | 1.2.1975 |
| Keijo | Kirjailija | TIE001 | 1.2.2000 | 2.5.2002 |
| Keijo | Kirjailija | TIE001 | 1.2.2000 | 1.2.2025 |
| Keijo | Kirjailija | TIE001 | 1.2.2000 | 2 |
| Keijo | Kirjailija | TIE120 | 1.2.2000 | 3 |
| Keijo | Kirjailija | TIE120 | 1.2.2000 | 1.2.1975 |
| Kimmo | Kasvattaja | TIE150 | 1.1.1997 | 3 |
| Kimmo | Kasvattaja | TIE150 | 1.1.1998 | 1.2.1975 |
| Kimmo | Kasvattaja | TIE150 | 1.1.1999 | 2.5.2002 |
| Kimmo | Kasvattaja | TIE150 | 1.1.1997 | 1.2.2025 |
| Kimmo | Kasvattaja | TIE150 | 1.1.1997 | 2 |
| Kimmo | Kasvattaja | TIE150 | 1.3.1997 | 1.2.1975 |
| Kimmo | Kasvattaja | TIE150 | 1.1.1997 | 1.1.1975 |
| Kimmo | Kasvattaja | TIE150 | 1.1.1997 | 1.5.2002 |
| Kimmo | Kasvattaja | TIE150 | 1.2.1997 | 1.2.2025 |
| Kimmo | Kasvattaja | TIE160 | 1.1.2000 | 2 |
| Kimmo | Kasvattaja | TIE160 | 1.1.2000 | 1.1.1975 |
| Kimmo | Kasvattaja | TIE160 | 1.1.2000 | 1.5.2002 |
| Kimmo | Kasvattaja | TIE160 | 1.1.2000 | 1.1.2025 |
| Kimmo | Kasvattaja | TIE160 | 1.1.2000 | 3 |
| Kimmo | Kasvattaja | TIE160 | 1.1.2000 | 1.2.1975 |
| Kimmo | Kasvattaja | TIE160 | 1.1.2000 | 2.5.2002 |
| Kimmo | Kasvattaja | TIE110 | 1.1.2000 | 2 |
| Kimmo | Kasvattaja | TIE110 | 1.2.2000 | 0 |
| Kimmo | Kasvattaja | TIE110 | 1.3.2000 | 2 |
| Kimmo | Kasvattaja | TIE110 | 1.4.2000 | 0 |
| Kimmo | Kasvattaja | TIE110 | 1.5.2000 | 3 |
| Kimmo | Kasvattaja | TIE110 | 1.6.2000 | 0 |
| Kimmo | Kasvattaja | TIE110 | 1.7.2000 | 0 |
| Kimmo | Kasvattaja | TIE101 | 1.1.2000 | 0 |
| Kimmo | Kasvattaja | TIE101 | 1.1.2000 | 1.1.1975 |
| Kimmo | Kasvattaja | TIE001 | 1.1.2000 | 1.5.2002 |
| Kimmo | Kasvattaja | TIE001 | 1.1.2000 | 1.1.2025 |
| Kimmo | Kasvattaja | TIE001 | 1.1.2000 | 0 |
| Kimmo | Kasvattaja | TIE120 | 1.1.2000 | 0 |
| Kimmo | Kasvattaja | TIE120 | 1.1.2000 | 2.5.2002 |
| Kimmo | Kasvattaja | TIE101 | 1.2.2000 | 1 |
| Kimmo | Kasvattaja | TIE101 | 1.2.2000 | 1.2.1975 |
| Kimmo | Kasvattaja | TIE001 | 1.2.2000 | 2.5.2002 |
| Kimmo | Kasvattaja | TIE001 | 1.2.2000 | 1.2.2025 |
| Kimmo | Kasvattaja | TIE001 | 1.2.2000 | 2 |
| Kimmo | Kasvattaja | TIE120 | 1.2.2000 | 3 |
| Kimmo | Kasvattaja | TIE120 | 1.2.2000 | 1.2.1975 |
| Olli | Opettaja | TIE150 | 1.1.1997 | 3 |
| Olli | Opettaja | TIE150 | 1.1.1998 | 1.2.1975 |
| Olli | Opettaja | TIE150 | 1.1.1999 | 2.5.2002 |
| Olli | Opettaja | TIE150 | 1.1.1997 | 1.2.2025 |
| Olli | Opettaja | TIE150 | 1.1.1997 | 2 |
| Olli | Opettaja | TIE150 | 1.3.1997 | 1.2.1975 |
| Olli | Opettaja | TIE150 | 1.1.1997 | 1.1.1975 |
| Olli | Opettaja | TIE150 | 1.1.1997 | 1.5.2002 |
| Olli | Opettaja | TIE150 | 1.2.1997 | 1.2.2025 |
| Olli | Opettaja | TIE160 | 1.1.2000 | 2 |
| Olli | Opettaja | TIE160 | 1.1.2000 | 1.1.1975 |
| Olli | Opettaja | TIE160 | 1.1.2000 | 1.5.2002 |
| Olli | Opettaja | TIE160 | 1.1.2000 | 1.1.2025 |
| Olli | Opettaja | TIE160 | 1.1.2000 | 3 |
| Olli | Opettaja | TIE160 | 1.1.2000 | 1.2.1975 |
| Olli | Opettaja | TIE160 | 1.1.2000 | 2.5.2002 |
| Olli | Opettaja | TIE110 | 1.1.2000 | 2 |
| Olli | Opettaja | TIE110 | 1.2.2000 | 0 |
| Olli | Opettaja | TIE110 | 1.3.2000 | 2 |
| Olli | Opettaja | TIE110 | 1.4.2000 | 0 |
| Olli | Opettaja | TIE110 | 1.5.2000 | 3 |
| Olli | Opettaja | TIE110 | 1.6.2000 | 0 |
| Olli | Opettaja | TIE110 | 1.7.2000 | 0 |
| Olli | Opettaja | TIE101 | 1.1.2000 | 0 |
| Olli | Opettaja | TIE101 | 1.1.2000 | 1.1.1975 |
| Olli | Opettaja | TIE001 | 1.1.2000 | 1.5.2002 |
| Olli | Opettaja | TIE001 | 1.1.2000 | 1.1.2025 |
| Olli | Opettaja | TIE001 | 1.1.2000 | 0 |
| Olli | Opettaja | TIE120 | 1.1.2000 | 0 |
| Olli | Opettaja | TIE120 | 1.1.2000 | 2.5.2002 |
| Olli | Opettaja | TIE101 | 1.2.2000 | 1 |
| Olli | Opettaja | TIE101 | 1.2.2000 | 1.2.1975 |
| Olli | Opettaja | TIE001 | 1.2.2000 | 2.5.2002 |
| Olli | Opettaja | TIE001 | 1.2.2000 | 1.2.2025 |
| Olli | Opettaja | TIE001 | 1.2.2000 | 2 |
| Olli | Opettaja | TIE120 | 1.2.2000 | 3 |
| Olli | Opettaja | TIE120 | 1.2.2000 | 1.2.1975 |
-
Korjataan kyselyä lisäämällä WHERE-ehto, joka kertoo mikä kenttä yhdistää käsiteltävät
taulut.
SELECT etunimi, sukunimi, kurssi, paivamaara, arvosana
FROM Opiskelija, Tenttii
WHERE opiskelija.sotu = tenttii.opiskelija;
| etunimi | sukunimi | kurssi | paivamaara | arvosana |
| Taina | Tieteilijä | TIE001 | 1.1.2000 | 1.1.2025 |
| Taina | Tieteilijä | TIE001 | 1.2.2000 | 1.2.2025 |
| Taina | Tieteilijä | TIE110 | 1.4.2000 | 0:00:00 |
| Taina | Tieteilijä | TIE150 | 1.1.1997 | 1.2.2025 |
| Taina | Tieteilijä | TIE160 | 1.1.2000 | 1.1.2025 |
| Tommi | Lahtonen | TIE101 | 1.1.2000 | 0:00:00 |
| Tommi | Lahtonen | TIE101 | 1.2.2000 | 31.12.1899 |
| Tommi | Lahtonen | TIE110 | 1.1.2000 | 1.1.1900 |
| Tommi | Lahtonen | TIE150 | 1.1.1997 | 2.1.1900 |
| Tommi | Lahtonen | TIE160 | 1.1.2000 | 2 |
| Kaisa | Kielinero | TIE001 | 1.1.2000 | 0:00:00 |
| Kaisa | Kielinero | TIE001 | 1.2.2000 | 1.1.1900 |
| Kaisa | Kielinero | TIE110 | 1.5.2000 | 2.1.1900 |
| Kaisa | Kielinero | TIE150 | 1.1.1997 | 2 |
| Kaisa | Kielinero | TIE150 | 1.3.1997 | 1.2.1975 |
| Kaisa | Kielinero | TIE160 | 1.1.2000 | 2.1.1900 |
| Keijo | Kirjailija | TIE110 | 1.6.2000 | 0 |
| Keijo | Kirjailija | TIE120 | 1.1.2000 | 0 |
| Keijo | Kirjailija | TIE120 | 1.2.2000 | 3 |
| Keijo | Kirjailija | TIE150 | 1.1.1997 | 1.1.1975 |
| Keijo | Kirjailija | TIE160 | 1.1.2000 | 1.2.1975 |
| Kimmo | Kasvattaja | TIE110 | 1.7.2000 | 0 |
| Kimmo | Kasvattaja | TIE120 | 1.1.2000 | 2.5.2002 |
| Kimmo | Kasvattaja | TIE120 | 1.2.2000 | 1.2.1975 |
| Kimmo | Kasvattaja | TIE150 | 1.1.1997 | 1.5.2002 |
| Kimmo | Kasvattaja | TIE150 | 1.2.1997 | 1.2.2025 |
| Kimmo | Kasvattaja | TIE160 | 1.1.2000 | 2.5.2002 |
| Petri | Heinonen | TIE101 | 1.1.2000 | 1.1.1975 |
| Petri | Heinonen | TIE101 | 1.2.2000 | 1.2.1975 |
| Petri | Heinonen | TIE110 | 1.2.2000 | 0:00:00 |
| Petri | Heinonen | TIE150 | 1.1.1998 | 1.2.1975 |
| Petri | Heinonen | TIE160 | 1.1.2000 | 1.1.1975 |
| Teemu | Tieteilijä | TIE001 | 1.1.2000 | 1.5.2002 |
| Teemu | Tieteilijä | TIE001 | 1.2.2000 | 2.5.2002 |
| Teemu | Tieteilijä | TIE110 | 1.3.2000 | 2 |
| Teemu | Tieteilijä | TIE150 | 1.1.1999 | 2.5.2002 |
| Teemu | Tieteilijä | TIE160 | 1.1.2000 | 1.5.2002 |
- Entäs jos haluammekin keskiarvon opiskelijan suorituksista.
Ensimmäinen versio kyselystä menee helposti väärin koska
GROUP BY-rivi unohtuu:
VÄÄRIN
SELECT etunimi, sukunimi, kurssi, paivamaara, AVG(arvosana)
FROM Opiskelija, Tenttii
WHERE opiskelija.sotu = tenttii.opiskelija;
Error while executing the query;
ERROR: Attribute opiskelija.etunimi must be GROUPed or used in an aggregate function
State:S1000,Native:7,Origin:
- Korjataan lisäämällä
GROUP BY-osaan kaikki ne kentät jotka halutaan
lopputulokseen ja joissa ei käytetä yhteenvetofunktioita. Lopputulos ei kuitenkaan
vielä ole toivottu, koska ryhmittelykenttiä on liian monta.
SELECT etunimi, sukunimi, kurssi, paivamaara, AVG(arvosana)
FROM Opiskelija, Tenttii
WHERE opiskelija.sotu = tenttii.opiskelija
GROUP BY etunimi, sukunimi, kurssi, paivamaara
;
| etunimi | sukunimi | kurssi | paivamaara | avg |
| Kaisa | Kielinero | TIE001 | 1.1.2000 | 0 |
| Kaisa | Kielinero | TIE001 | 1.2.2000 | 2 |
| Kaisa | Kielinero | TIE110 | 1.5.2000 | 3 |
| Kaisa | Kielinero | TIE150 | 1.1.1997 | 2 |
| Kaisa | Kielinero | TIE150 | 1.3.1997 | 1.2.1975 |
| Kaisa | Kielinero | TIE160 | 1.1.2000 | 3 |
| Keijo | Kirjailija | TIE110 | 1.6.2000 | 0 |
| Keijo | Kirjailija | TIE120 | 1.1.2000 | 0 |
| Keijo | Kirjailija | TIE120 | 1.2.2000 | 3 |
| Keijo | Kirjailija | TIE150 | 1.1.1997 | 1.1.1975 |
| Keijo | Kirjailija | TIE160 | 1.1.2000 | 1.2.1975 |
| Kimmo | Kasvattaja | TIE110 | 1.7.2000 | 0 |
| Kimmo | Kasvattaja | TIE120 | 1.1.2000 | 2.5.2002 |
| Kimmo | Kasvattaja | TIE120 | 1.2.2000 | 1.2.1975 |
| Kimmo | Kasvattaja | TIE150 | 1.1.1997 | 1.5.2002 |
| Kimmo | Kasvattaja | TIE150 | 1.2.1997 | 1.2.2025 |
| Kimmo | Kasvattaja | TIE160 | 1.1.2000 | 2.5.2002 |
| Petri | Heinonen | TIE101 | 1.1.2000 | 1.1.1975 |
| Petri | Heinonen | TIE101 | 1.2.2000 | 1.2.1975 |
| Petri | Heinonen | TIE110 | 1.2.2000 | 0 |
| Petri | Heinonen | TIE150 | 1.1.1998 | 1.2.1975 |
| Petri | Heinonen | TIE160 | 1.1.2000 | 1.1.1975 |
| Taina | Tieteilijä | TIE001 | 1.1.2000 | 1.1.2025 |
| Taina | Tieteilijä | TIE001 | 1.2.2000 | 1.2.2025 |
| Taina | Tieteilijä | TIE110 | 1.4.2000 | 0 |
| Taina | Tieteilijä | TIE150 | 1.1.1997 | 1.2.2025 |
| Taina | Tieteilijä | TIE160 | 1.1.2000 | 1.1.2025 |
| Teemu | Tieteilijä | TIE001 | 1.1.2000 | 1.5.2002 |
| Teemu | Tieteilijä | TIE001 | 1.2.2000 | 2.5.2002 |
| Teemu | Tieteilijä | TIE110 | 1.3.2000 | 2 |
| Teemu | Tieteilijä | TIE150 | 1.1.1999 | 2.5.2002 |
| Teemu | Tieteilijä | TIE160 | 1.1.2000 | 1.5.2002 |
| Tommi | Lahtonen | TIE101 | 1.1.2000 | 0 |
| Tommi | Lahtonen | TIE101 | 1.2.2000 | 1 |
| Tommi | Lahtonen | TIE110 | 1.1.2000 | 2 |
| Tommi | Lahtonen | TIE150 | 1.1.1997 | 3 |
| Tommi | Lahtonen | TIE160 | 1.1.2000 | 2 |
- Korjataan kyselyä lisää ja poistetaan ne kentät joiden mukaan emme halua ryhmitellä.
Tällä kertaa meitä kiinnostavat suorituksien keskiarvo pelkän opiskelijan mukaan joten jätämme vain
etunimi ja sukunimi -kentät arvosanan laskemisen lisäksi.
SELECT etunimi, sukunimi, AVG(arvosana)
FROM Opiskelija, Tenttii
WHERE opiskelija.sotu = tenttii.opiskelija
GROUP BY etunimi, sukunimi
;
| etunimi | sukunimi | avg |
| Kaisa | Kielinero | 2.125 |
| Keijo | Kirjailija | 1.5.2002 |
| Kimmo | Kasvattaja | 1.91666666666667 |
| Petri | Heinonen | 1.8.2002 |
| Taina | Tieteilijä | 1.4.2002 |
| Teemu | Tieteilijä | 2 |
| Tommi | Lahtonen | 1.6.2002 |
- Nyt voimme rajata lopputulokseen tulevia ryhmiä. Otetaan mukaan
vain ne opiskelijat joilla keskiarvo on suurempi tai yhtäsuuri kuin 1.75.
Yleinen virhe on yrittää kirjoittaa rajoitus seuraavasti:
VÄÄRIN
SELECT etunimi, sukunimi, AVG(arvosana)
FROM Opiskelija, Tenttii
WHERE opiskelija.sotu = tenttii.opiskelija
AND AVG(arvosana) > 2.3
GROUP BY etunimi, sukunimi
;
Error while executing the query;
ERROR: Aggregates not allowed in WHERE clause
State:S1000,Native:7,Origin:
-
Yhteenvetofunktioita ei voi käyttää WHERE-lauseessa, koska WHERE-lause kohdistuu
aina yksittäiseen riviin eikä joukkoon kuten yhteenvetofunktiot. Oikea
tapa tehdä haluttu rajoitus on käyttää HAVING-lausetta:
SELECT etunimi, sukunimi, AVG(arvosana)
FROM Opiskelija, Tenttii
WHERE opiskelija.sotu = tenttii.opiskelija
GROUP BY etunimi, sukunimi
HAVING AVG(arvosana) >= 1.75
;
| etunimi | sukunimi | avg |
| Kaisa | Kielinero | 2.125 |
| Kimmo | Kasvattaja | 1.91666666666667 |
| Petri | Heinonen | 1.8.2002 |
| Teemu | Tieteilijä | 2 |
- HAVING-lausetta ei voi myöskään käyttää ilman GROUP BY -lausetta, koska
mitään ryhmittelyä ei tietenkään ole tehty:
SELECT etunimi, sukunimi, AVG(arvosana)
FROM Opiskelija, Tenttii
WHERE opiskelija.sotu = tenttii.opiskelija
HAVING AVG(arvosana) > 2.3
;
Error while executing the query;
ERROR: Attribute opiskelija.etunimi must be GROUPed or used in an aggregate function
State:S1000,Native:7,Origin:
- Tähän mennessä ei ole otettu mitenkään kantaa lopputuloksen järjestykseen.
Lopputulokseen tulevien tietueiden järjestys on aivan järjestelmäkohtaista jos
sitä ei ole määrätty ORDER BY -lauseella:
SELECT etunimi, sukunimi, AVG(arvosana)
FROM Opiskelija, Tenttii
WHERE opiskelija.sotu = tenttii.opiskelija
GROUP BY etunimi, sukunimi
HAVING AVG(arvosana) >= 1.75
ORDER BY sukunimi ASC, etunimi ASC
| etunimi | sukunimi | avg |
| Petri | Heinonen | 1.8.2002 |
| Kimmo | Kasvattaja | 1.91666666666667 |
| Kaisa | Kielinero | 2.125 |
| Teemu | Tieteilijä | 2 |
- Järjestyksen voi määrätä myös yhteenvetofunktion avulla:
SELECT etunimi, sukunimi, AVG(arvosana)
FROM Opiskelija, Tenttii
WHERE opiskelija.sotu = tenttii.opiskelija
GROUP BY etunimi, sukunimi
HAVING AVG(arvosana) >= 1.75
ORDER BY AVG(arvosana) ASC
| etunimi | sukunimi | avg |
| Petri | Heinonen | 1.8.2002 |
| Kimmo | Kasvattaja | 1.91666666666667 |
| Teemu | Tieteilijä | 2 |
| Kaisa | Kielinero | 2.125 |