sql >> Database teknologi >  >> RDS >> SQLite

SQLite Inner Join

Oversigt :denne vejledning viser dig, hvordan du bruger SQLite inner join-klausul til at forespørge data fra flere tabeller.

Introduktion til SQLite indre joinsætning

I relationelle databaser er data ofte fordelt i mange relaterede tabeller. En tabel er knyttet til en anden tabel ved hjælp af fremmednøgler.

For at forespørge data fra flere tabeller, bruger du INNER JOIN klausul. INNER JOIN klausul kombinerer kolonner fra korrelerede tabeller.

Antag, at du har to tabeller:A og B.

A har kolonnerne a1, a2 og f. B har b1, b2 og f kolonne. A-tabellen linker til B-tabellen ved hjælp af en fremmednøglekolonne ved navn f.

Det følgende illustrerer syntaksen for den indre joinsætning:

SELECT a1, a2, b1, b2
FROM A
INNER JOIN B on B.f = A.f;Code language: SQL (Structured Query Language) (sql)

For hver række i A-tabellen vises INNER JOIN klausul sammenligner værdien af ​​f-kolonnen med værdien af ​​f-kolonnen i B-tabellen. Hvis værdien af ​​f-kolonnen i A-tabellen er lig med værdien af ​​f-kolonnen i B-tabellen, kombinerer den data fra a1, a2, b1, b2, kolonner og inkluderer denne række i resultatsættet.

Med andre ord, INNER JOIN klausul returnerer rækker fra A-tabellen, der har den tilsvarende række i B-tabellen.

Denne logik anvendes, hvis du forbinder mere end 2 tabeller.

Se følgende eksempel.

Kun rækkerne i A-tabellen:(a1,1), (a3,3) har de tilsvarende rækker i B-tabellen (b1,1), (b2,3) med i resultatsættet.

Følgende diagram illustrerer INNER JOIN klausul:

SQLite INNER JOIN eksempler

Lad os tage et kig på tracks og albums tabeller i eksempeldatabasen. tracks tabellinks til albums tabel via AlbumId kolonne.

I tracks tabellen, AlbumId kolonne er en fremmednøgle. Og i albums tabellen, AlbumId er den primære nøgle.

For at forespørge data fra begge tracks og albums tabeller, bruger du følgende sætning:

SELECT
	trackid,
	name,
	title
FROM
	tracks
INNER JOIN albums ON albums.albumid = tracks.albumid;Code language: SQL (Structured Query Language) (sql)

Prøv det

For hver række i sportabellen bruger SQLite værdien i albumid kolonne af tracks tabel for at sammenligne med værdien i albumid af albums bord. Hvis SQLite finder et match, kombinerer det data fra rækker i begge tabeller i resultatsættet.

Du kan inkludere AlbumId kolonner fra begge tabeller i det endelige resultatsæt for at se effekten.

SELECT
    trackid,
    name,
    tracks.albumid AS album_id_tracks,
    albums.albumid AS album_id_albums,
    title
FROM
    tracks
    INNER JOIN albums ON albums.albumid = tracks.albumid;Code language: SQL (Structured Query Language) (sql)

Prøv det

SQLite indre joinforbindelse – 3 tabeller eksempel

Se følgende tabeller:tracks albums og artists

Et nummer hører til et album, og et album har mange numre. tracks tabel knyttet til albums tabel via albumid kolonne.

Et album tilhører én kunstner, og én kunstner har et eller flere album. albums tabellinks til artists tabel via artistid kolonne.

For at forespørge data fra disse tabeller skal du bruge to indre join-klausuler i SELECT erklæring som følger:

SELECT
    trackid,
    tracks.name AS track,
    albums.title AS album,
    artists.name AS artist
FROM
    tracks
    INNER JOIN albums ON albums.albumid = tracks.albumid
    INNER JOIN artists ON artists.artistid = albums.artistid;Code language: SQL (Structured Query Language) (sql)

Prøv det

Du kan bruge en WHERE-klausul til at hente numrene og albummene fra kunstneren med id 10 som følgende udsagn:

SELECT
	trackid,
	tracks.name AS Track,
	albums.title AS Album,
	artists.name AS Artist
FROM
	tracks
INNER JOIN albums ON albums.albumid = tracks.albumid
INNER JOIN artists ON artists.artistid = albums.artistid
WHERE
	artists.artistid = 10;Code language: SQL (Structured Query Language) (sql)

Prøv det

I denne tutorial har du lært, hvordan du bruger SQLite INNER JOIN klausul for at forespørge data fra flere tabeller.


  1. Begrundelse for I STEDET FOR triggere – del 1

  2. PHP mysql indsæt datoformat

  3. Hvordan implementerer man SQLite-database til at gemme bitmapbillede og tekst?

  4. Få den venstre del af en streng i SQL Server (T-SQL)