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

Самоприсъединяване към SQLite

Резюме :в този урок ще научите за специален тип присъединяване, наречен SQLite self-join, който ви позволява да присъедините таблицата към себе си.

Имайте предвид, че трябва да сте запознати с INNER JOIN и LEFT JOIN клаузи, преди да продължите с този урок.

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

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

Тъй като не можете да препращате към една и съща таблица повече от една в заявка, трябва да използвате псевдоним на таблица, за да присвоите на таблицата различно име, когато използвате самостоятелно присъединяване.

Самоприсъединяването сравнява стойностите на едни и същи или различни колони в една и съща таблица. Само една маса участва в самоприсъединяването.

Често използвате самоприсъединяване, за да зададете заявка за връзката родител/дете, съхранена в таблица, или за получаване на текущи суми.

Примери за самостоятелно присъединяване в SQLite

Ще използваме employees таблица в примерната база данни за демонстрация.

employees таблицата съхранява не само данни за служителите, но и организационни данни. ReportsTo колоната посочва взаимоотношенията за отчитане между служителите.

Ако служител се отчита на мениджър, стойността на ReportsTo колона на реда на служителя е равна на стойността на EmployeeId колона на реда на мениджъра. В случай, че служител не докладва на никого, ReportsTo колоната е NULL .

За да получите информация кой на кого е пряк докладчик, използвате следното изявление:

SELECT m.firstname || ' ' || m.lastname AS 'Manager',
       e.firstname || ' ' || e.lastname AS 'Direct report' 
FROM employees e
INNER JOIN employees m ON m.employeeid = e.reportsto
ORDER BY manager;Code language: SQL (Structured Query Language) (sql)

Опитайте го

Изявлението използва INNER JOIN клауза за присъединяване към employees към себе си. employees таблицата има две роли:служители и мениджъри.

Тъй като използвахме INNER JOIN клауза за присъединяване към employees таблица за себе си, резултантният набор няма реда, чиято колона на мениджъра съдържа NULL стойност.

Обърнете внимание, че операторът за конкатенация || конкатенира множество низове в един низ. В примера използваме оператора за конкатенация до от пълните имена на служителите, като обединяваме името, интервала и фамилията.

В случай, че искате да попитате главния изпълнителен директор, който не се отчита на никого, трябва да промените INNER JOIN клауза за LEFT JOIN клауза в заявката по-горе.

Andrew Adams е главен изпълнителен директор, защото не докладва за никого.

Можете да използвате техниката на самостоятелно присъединяване, за да намерите служителите, намиращи се в същия град като следната заявка:

SELECT DISTINCT
	e1.city,
	e1.firstName || ' ' || e1.lastname AS fullname
FROM
	employees e1
INNER JOIN employees e2 ON e2.city = e1.city 
   AND (e1.firstname <> e2.firstname AND e1.lastname <> e2.lastname)
ORDER BY
	e1.city;Code language: SQL (Structured Query Language) (sql)

Опитайте го

Условието за присъединяване има два израза:

  • e1.city = e2.city за да се уверите, че и двамата служители се намират в един и същи град
  • e.firstname <> e2.firstname AND e1.lastname <> e2.lastname за да се гарантира, че e1 и e2 не са един и същи служител с допускането, че няма служители, които имат едно и също име и фамилия.

В този урок ви показахме как да използвате техниката за самостоятелно присъединяване на SQLite, за да присъедините таблица към себе си.


  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, които са създадени и експортирани в sqllite

  2. Как работи SQLite Char().

  3. Android Room Library не успява да копира база данни от актив

  4. Как мога да вмъкна изображение в sqlite база данни

  5. Как да получите броя на редовете в sqlite с Android?