lomeo: (Default)
[personal profile] lomeo
Век живи, век учись.
Оказывается есть в стандарте SQL некий NATURAL JOIN, о котором я даже не слышал.
Вот здесь описания CROSS JOIN (простое декартово произведение таблиц) и NATURAL JOIN.


Вкратце, NATURAL JOIN - это аргумент в пользу названия полей таблиц с префиксами.
Например
CREATE TABLE employee
(
    emp_id INTEGER,
    dep_id INTEGER,
    emp_name VARCHAR(50)
);

CREATE TABLE department 
(
    dep_id INTEGER,
    comp_id INTEGER,
    dep_name VARCHAR(50)
);

CREATE TABLE company
(
    comp_id INTEGER,
    comp_name VARCHAR(50)
);

Первичные и форейн ключи не описываю.
Так вот, теперь для выборки сотрудников компании 'Рога и копыта' достаточно
SELECT
    emp_id,
    emp_name
FROM
    company NATURAL JOIN
    department NATURAL JOIN
    employee
WHERE
    comp_name = 'Рога и копыта'

Profile

lomeo: (Default)
Dmitry Antonyuk

September 2025

S M T W T F S
 123456
78910111213
14 151617181920
21222324252627
282930    

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Feb. 26th, 2026 07:32 pm
Powered by Dreamwidth Studios