MySql JOIN

kongen

kongemedlem
Hvordan bruker man JOIN for å hente ut info fra flere db-tabeller?

Hvis jeg i tabell_1 har jeg disse feltene:

- id
- filmtittel
- info

Og i tabell_2 så har jeg disse feltene:

- filmtittel
- karakter

Jeg skal hente ut id, filmtittel og info fra tabell_1 hvor filmtittel har fått karakter i tabell_2.

Er det LEFT eller RIGHT JOIN?
 

kongen

kongemedlem
Takk :)

Hva hvis det er to felter som må matche?

Hvis tabell_1 har disse:

- id
- filmtittel
- sone
- info

Og tabell_2 har disse:

- filmtittel
- sone
- karakter

Blir det noe slikt:

select * from tabell_1 t1 left join tabell_2 t2 on t1.filmtittel=t2.filmtittel AND t1.sone=t2.sone where t2.karakter is not null
 

Hashead

Member
Hvis du hadde brukt inner join kunne du droppet where klausulen, og optimalisert spørringen din.

Inner join returnerer kun raden hvis verdien finnes i begge tabeller. Left returnerer raden med null verdier for tabell_2 der verdien ikke eksisterer i tabellen "til høyre" ( tabell_2 i dette tilfellet ). Right er motsatt.

Å bruke joins på uindekserte tekstfelt vil fort gå veldig tregt. Joins skal som regel kun brukes på indekserte id felt, så det du gjør her er ikke skalerbart.
 

kongen

kongemedlem
Hvordan blir dette med INNER JOIN?

Blir det noe slikt:

select * from tabell_1 t1 inner join tabell_2 t2 on t1.filmtittel=t2.filmtittel AND t1.sone=t2.sone;
 
Topp