خوش آموز درخت تو گر بار دانش بگیرد، به زیر آوری چرخ نیلوفری را
نحوه FULL OUTER JOIN کردن جداول مختلف در SQL Server
در این پست نحوه FULL OUTER JOIN بین دو یا چند جدول را در SQL Server مورد بررسی قرار می دهیم. FULL OUTER JOIN یک result set ای را بر می گرداند که شامل ردیف ها یا رکوردهایی از هر دو جدول چپ و راست است. در Syntax زیر FULL OUTER JOIN، جوین شدن دو جدول T1 و T2 را نشان می دهد:
کلمه OUTER در اسکریپت FULL OUTER JOIN اختیاری است و می توانید آن را درج نکنید همانطور که در کوئری زیر مشاهده می کنید، OUTER نوشته نشده است:
تفاوت Inner Join و Outer Join در SQL Server چیست
نحوه Join کردن جداول دیتابیس های مختلف از یک SQL Server
Venn diagram نحوه FULL OUTER JOIN شدن دو Result set جدول فوق را نشان می دهد:
خب، در ادامه با ذکر مثال این نوع جوین را تشریح می کنیم. ابتدا یک schema با نام pm ایجاد کنید(project managements).
سپس دو جدول projects و members را در شمای pm ایجاد کنید:
فرض کنید ، هر یک از اعضا فقط می تواند در یک پروژه شرکت کند و اعضاهر پروژه می تواند صفر یا تعدادی عضو داشته باشد. اگر پروژه هنوز به صورت عملی شروع نشده و در مرحله فکر و ایده باشد، هیچ عضوی نباید داشته باشد.
خب، حالا چند رکورد به جداول projects و members اضافه می کنیم:
حالا با یک دستور ساده Select مقادیر جداول را در مقابلمان مشاهده می کنیم:
در آخر با استفاده از FULL OUTER JOIN، کوئری خود را روی جداول members و projects ایجاد می کنیم:
در این مثال ، اعضایی را که در پروژه ها شرکت می کنند، اعضایی را که در هیچ پروژه ای شرکت نمی کنند و پروژه هایی را که هیچ عضوی ندارند، نمایش داده شد.
برای یافتن پروژه هایی که هیچ عضوی ندارند و همچنین اعضایی که در هیچ پروژه ای عضو نیستند، با WHERE به کوئری فوق اضافه کنید:
SELECT
select_list
FROM
T1
FULL OUTER JOIN T2 ON join_predicate;
کلمه OUTER در اسکریپت FULL OUTER JOIN اختیاری است و می توانید آن را درج نکنید همانطور که در کوئری زیر مشاهده می کنید، OUTER نوشته نشده است:
SELECT
select_list
FROM
T1
FULL JOIN T2 ON join_predicate;
تفاوت Inner Join و Outer Join در SQL Server چیست
نحوه Join کردن جداول دیتابیس های مختلف از یک SQL Server
Venn diagram نحوه FULL OUTER JOIN شدن دو Result set جدول فوق را نشان می دهد:
خب، در ادامه با ذکر مثال این نوع جوین را تشریح می کنیم. ابتدا یک schema با نام pm ایجاد کنید(project managements).
CREATE SCHEMA pm;
GO
سپس دو جدول projects و members را در شمای pm ایجاد کنید:
CREATE TABLE pm.projects(
id INT PRIMARY KEY IDENTITY,
title VARCHAR(255) NOT NULL
);
CREATE TABLE pm.members(
id INT PRIMARY KEY IDENTITY,
name VARCHAR(120) NOT NULL,
project_id INT,
FOREIGN KEY (project_id)
REFERENCES pm.projects(id)
);
فرض کنید ، هر یک از اعضا فقط می تواند در یک پروژه شرکت کند و اعضاهر پروژه می تواند صفر یا تعدادی عضو داشته باشد. اگر پروژه هنوز به صورت عملی شروع نشده و در مرحله فکر و ایده باشد، هیچ عضوی نباید داشته باشد.
خب، حالا چند رکورد به جداول projects و members اضافه می کنیم:
INSERT INTO
pm.projects(title)
VALUES
('New CRM for Project Sales'),
('ERP Implementation'),
('Develop Mobile Sales Platform');
INSERT INTO
pm.members(name, project_id)
VALUES
('John Doe', 1),
('Lily Bush', 1),
('Jane Doe', 2),
('Jack Daniel', null);
حالا با یک دستور ساده Select مقادیر جداول را در مقابلمان مشاهده می کنیم:
SELECT * FROM pm.projects;
SELECT * FROM pm.members;
در آخر با استفاده از FULL OUTER JOIN، کوئری خود را روی جداول members و projects ایجاد می کنیم:
SELECT
m.name member,
p.title project
FROM
pm.members m
FULL OUTER JOIN pm.projects p
ON p.id = m.project_id;
در این مثال ، اعضایی را که در پروژه ها شرکت می کنند، اعضایی را که در هیچ پروژه ای شرکت نمی کنند و پروژه هایی را که هیچ عضوی ندارند، نمایش داده شد.
برای یافتن پروژه هایی که هیچ عضوی ندارند و همچنین اعضایی که در هیچ پروژه ای عضو نیستند، با WHERE به کوئری فوق اضافه کنید:
SELECT
m.name member,
p.title project
FROM
pm.members m
FULL OUTER JOIN pm.projects p
ON p.id = m.project_id
WHERE
m.id IS NULL OR
P.id IS NULL;
نمایش دیدگاه ها (0 دیدگاه)
دیدگاه خود را ثبت کنید: