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

Как да се присъедините към множество колони

Проблем:

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

Пример:

Нашата база данни има три таблици с име student , enrollment , и payment . student таблицата има данни в следните колони:id (първичен ключ), first_name и last_name .

id first_name фамилно_име
1 Ели Уилсън
2 Том Кафяв
3 Сандра Милър

enrollment таблицата има данни в следните колони:първичен ключ (student_id и course_code ), is_active и start_date .

идентификатор_учен код_курса е_активен начална_дата
1 GD03 вярно 20.01.2020
1 AP01 невярно 10.03.2020
2 SL01 вярно 05.05.2020
3 SL01 вярно 01.06.2020

payment таблицата има данни в следните колони:външен ключ (student_id и course_code , първичните ключове на enrollment таблица), status и amount .

идентификатор_учен код_курса статус количество
1 GD03 платено 230
1 AP01 изчаква 100
2 SL01 изчаква 80
3 SL01 изчаква 110

Нека покажем името на всеки ученик, кода на курса и състоянието на плащането и сумата.

Решение:

SELECT
  s.last_name, s.first_name,
  p.course_code, p.status, p.amount
FROM enrollment e
JOIN student s
  ON s.id=e.student_id
JOIN payment p
  ON p.course_code=e.course_code
	AND p.student_id=e.student_id;
фамилно_име first_name код_курса статус количество
Уилсън Ели GD03 платено 230
Уилсън Ели AP01 изчаква 100
Кафяв Том SL01 изчаква 80
Милър Сандра SL01 изчаква 110

Дискусия:

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

В една обединена таблица (в нашия пример enrollment ), имаме първичен ключ, изграден от две колони (student_id и course_code ). Във втората таблица (payment ), имаме колони, които са чужд съставен ключ (student_id и course_code ). Как можем да обединим таблиците с тези съставни ключове?

Лесно! Трябва само да използваме JOIN клауза с повече от едно условие, като използвате оператора И след първото условие. В нашия пример използваме това условие:

p.course_code=e.course_code AND p.student_id=e.student_id

В първата част използваме student_id колона от enrollment таблица и student_id от payment маса. В следващото условие получаваме course_code колона от enrollment таблица и course_code от payment таблица.

Обърнете внимание, че student_id и course_code колони формират първичен ключ в enrollment маса. Следователно те се използват в payment таблица като външен ключ.


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Как да използвате Prisma

  2. Съхранение на данни:REST срещу POSIX за архиви и HSM

  3. SQL CREATE TABLE за начинаещи

  4. Анализирайте стойностите по подразбиране на параметрите с помощта на PowerShell – част 3

  5. Как да номерирате редове в SQL