← Tilbake til oversikten

USN – Nivå 3

Å hente data fra flere tabeller: Likekoblinger og gruppering


Hva er INNER JOIN?

INNER JOIN brukes når vi vil hente rader som har matchende verdier i to tabeller. Bare de radene som oppfyller koblingsbetingelsen blir med i resultatet.

SELECT Kunde.Etternavn, Ordre.OrdreNr
FROM Kunde
INNER JOIN Ordre ON Kunde.KNr = Ordre.KNr;

I dette eksemplet vises kun kunder som faktisk har lagt inn ordre. Kunder uten ordre blir ikke med – det er derfor vi bruker INNER JOIN når vi bare vil se koblede data.


Før du begynner på oppgavene:

Start med å laste ned og kjøre SQL-skript for Hobbyhuset: hobbyhuset.sql. Legg merke til kommentarsetningen i start, fjern 3 x "--" for å opprette en ny database.

-- DROP DATABASE IF EXISTS hobbyhuset;
-- CREATE DATABASE hobbyhuset;
-- USE hobbyhuset;

⚠️ Ressurser ⚠️

Litt om store/små bokstaver i MySQL – se denne veiledningen. Se også: Spørringer mot én tabell og Spørringer mot flere tabeller.


Oppgaver:

A. Likekoblinger

B. Gruppering og mengdefunksjoner

C. Likekoblinger og gruppering

D. Forstå krysskobling og likekobling

Denne er en liten sjekk på forståelsen av koblinger, kan gjerne løses med penn og papir.

Tabell Person

Id  Navn  AvdNr
1   Ola   102
2   Kari  100
3   Per   100
4   Lise  102

Tabell Avdeling

AvdNr  AvdNavn
100    Salg
101    Lager
102    Utvikling

Tegn resultatet av disse spørringene:

  1. SELECT * FROM Person, Avdeling
  2. SELECT * FROM Person, Avdeling WHERE Person.AvdNr = Avdeling.AvdNr
  3. SELECT * FROM Person RIGHT OUTER JOIN Avdeling ON Person.AvdNr = Avdeling.AvdNr
Tips: Kjør DDL først (CREATE TABLE …), deretter INSERT. Test spørringer (SELECT) etterpå.

Se nivå 3 – løsningsforslag

Tilgjengelig etter passord.