SQLite
 sql >> база данни >  >> RDS >> SQLite

Вътрешно присъединяване на SQLite

Резюме :този урок ви показва как да използвате клауза за вътрешно присъединяване на SQLite за запитване на данни от множество таблици.

Въведение в клаузата за вътрешно присъединяване на SQLite

В релационните бази данни данните често се разпределят в много свързани таблици. Една таблица е свързана с друга таблица с помощта на външни ключове.

За да заявите данни от множество таблици, използвате INNER JOIN клауза. INNER JOIN клаузата комбинира колони от корелирани таблици.

Да предположим, че имате две таблици:A и B.

A има колони a1, a2 и f. B има b1, b2 и f колона. Таблицата A се свързва с таблицата B с помощта на колона с външен ключ с име f.

Следното илюстрира синтаксиса на клаузата за вътрешно свързване:

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

За всеки ред в таблицата A, INNER JOIN клауза сравнява стойността на f колоната със стойността на f колоната в таблицата B. Ако стойността на колоната f в таблицата A е равна на стойността на колоната f в таблицата B, тя комбинира данни от a1, a2, b1, b2, колони и включва този ред в набора от резултати.

С други думи, INNER JOIN клаузата връща редове от таблица A, която има съответния ред в таблица B.

Тази логика се прилага, ако се присъедините към повече от 2 маси.

Вижте следния пример.

Само редовете в таблицата A:(a1,1), (a3,3) имат съответните редове в таблица B (b1,1), (b2,3) са включени в набора от резултати.

Следната диаграма илюстрира INNER JOIN клауза:

SQLite INNER JOIN примери

Нека да разгледаме tracks и albums таблици в примерната база данни. tracks таблица връзки към albums таблица чрез AlbumId колона.

В tracks таблица, AlbumId колоната е външен ключ. И в albums таблица, AlbumId е първичният ключ.

За запитване на данни от двата tracks и albums таблици, използвате следния израз:

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

Опитайте го

За всеки ред в таблицата за проследяване SQLite използва стойността в albumid колона на tracks таблица за сравнение със стойността в albumid от albums маса. Ако SQLite намери съвпадение, той комбинира данни от редове в двете таблици в набора от резултати.

Можете да включите AlbumId колони от двете таблици в крайния набор от резултати, за да видите ефекта.

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)

Опитайте го

SQLite вътрешно свързване – пример за 3 таблици

Вижте следните таблици:tracks albums и artists

Една песен принадлежи на един албум, а един албум има много песни. tracks таблица, свързана с albums таблица чрез albumid колона.

Един албум принадлежи на един изпълнител, а един изпълнител има един или много албуми. albums връзки към таблицата към artists таблица чрез artistid колона.

За да заявите данни от тези таблици, трябва да използвате две вътрешни клаузи за свързване в SELECT изявление, както следва:

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)

Опитайте го

Можете да използвате клауза WHERE, за да получите песните и албумите на изпълнителя с идентификатор 10 като следното изявление:

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)

Опитайте го

В този урок научихте как да използвате SQLite INNER JOIN клауза за запитване на данни от множество таблици.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Android SQlite не актуализира данните

  2. зареждане на данни spinner от sqlite и mysql

  3. Как да използвате _COUNT в BaseColumns

  4. SQLiteStatement изпълнява SELECT / INSERT / DELETE / UPDATE

  5. execSQL() с UPDATE не се актуализира