انجمن وب سایت مشاوره در زمینه پروژه های برنامه نویسی و طراحی وب سایتهای تجاری
حذف Delete در Sql Server با استفاده از join ها - نسخه‌ی قابل چاپ

+- انجمن وب سایت مشاوره در زمینه پروژه های برنامه نویسی و طراحی وب سایتهای تجاری (http://forum.a00b.com)
+-- انجمن: سوالها و مقاله های آموزشی (/forumdisplay.php?fid=1)
+--- انجمن: مقاله های آموزشی (/forumdisplay.php?fid=3)
+--- موضوع: حذف Delete در Sql Server با استفاده از join ها (/showthread.php?tid=358)



حذف Delete در Sql Server با استفاده از join ها - ali - 09-02-2023 03:52 PM

مثال زیر نمونه‌ای از استفاده از Join برای حذف داده در SQL Server است:

کد:
CREATE TABLE Table1
(
    ID INT PRIMARY KEY,
    Col1 VARCHAR(50)
);

CREATE TABLE Table2
(
    ID INT PRIMARY KEY,
    Col2 VARCHAR(50)
);

INSERT INTO Table1 VALUES
(1, 'Data1'),
(2, 'Data2'),
(3, 'Data3');

INSERT INTO Table2 VALUES
(1, 'DataA'),
(2, 'DataB'),
(3, 'DataC');

DELETE T1
FROM Table1 T1
INNER JOIN Table2 T2
    ON T1.ID = T2.ID
WHERE T2.Col2 = 'DataB'

در این مثال، یک INNER JOIN بین دو جدول Table1 و Table2 ایجاد می‌کنیم. سپس با استفاده از دستور DELETE و فیلتر کردن روی Col2 جدول Table2، رکورد مرتبط در جدول Table1 حذف می‌شود.
در اینجا رکوردی که Col2 آن DataB است، حذف خواهد شد.
امیدوارم این مثال ساده بتواند نحوه استفاده از Join برای حذف داده در SQL Server را نشان دهد.



یک مثال پیچیده‌تر از استفاده از Join برای حذف داده در SQL Server - ali - 09-02-2023 03:55 PM

اینجا یک مثال پیچیده‌تر از استفاده از Join برای حذف داده در SQL Server ارائه شده است:


کد:
CREATE TABLE Products
(
    ProductID INT PRIMARY KEY,
    ProductName VARCHAR(100)
);

CREATE TABLE Orders
(
    OrderID INT PRIMARY KEY,
    CustomerID INT,
    ProductID INT,
    OrderDate DATE
);

CREATE TABLE Customers
(
    CustomerID INT PRIMARY KEY,
    CustomerName VARCHAR(100)
);


INSERT INTO Products
VALUES  
(1, 'Product 1'),
(2, 'Product 2'),
(3, 'Product 3');

INSERT INTO Orders
VALUES
(1, 1, 1, '2021-01-01'),
(2, 1, 2, '2021-02-01'),
(3, 1, 3, '2021-03-01'),
(4, 2, 1, '2021-04-01'),
(5, 3, 2, '2021-05-01');

INSERT INTO Customers
VALUES
(1, 'Customer 1'),
(2, 'Customer 2'),
(3, 'Customer 3');


DELETE O
FROM Orders O
INNER JOIN Customers C ON O.CustomerID = C.CustomerID
INNER JOIN Products P ON O.ProductID = P.ProductID
WHERE C.CustomerName = 'Customer 2' AND
      P.ProductName = 'Product 1'

در اینجا 3 جدول داریم که با هم در ارتباط هستند. ابتدا 2 جدول Customers و Products را با Orders جوین می‌کنیم. سپس رکوردهایی را که مربوط به Customer 2 و Product 1 باشند، حذف می‌کنیم.
این مثال پیچیده‌تری از حذف با استفاده از Join در SQL Server است.
امیدوارم مفید بوده باشد.



مثال پیچیده‌تر دیگر از استفاده از JOIN برای حذف داده در SQL Server با چهار جدول - ali - 09-02-2023 03:58 PM

یک مثال پیچیده‌تر دیگر از استفاده از JOIN برای حذف داده در SQL Server با چهار جدول


کد:
CREATE TABLE Employees
(
    EmployeeID INT PRIMARY KEY,
    Name VARCHAR(100),
    DepartmentID INT
);

CREATE TABLE Departments
(
    DepartmentID INT PRIMARY KEY,
    DepartmentName VARCHAR(100)
);

CREATE TABLE Projects
(
    ProjectID INT PRIMARY KEY,
    ProjectName VARCHAR(100),
    DepartmentID INT
);

CREATE TABLE EmployeeProjects
(
    EmployeeID INT,
    ProjectID INT,
    PRIMARY KEY (EmployeeID, ProjectID),
    HoursWorked INT
);


INSERT INTO Employees
VALUES  
(1, 'John', 1),
(2, 'Mary', 2),
(3, 'Steve', 2);

INSERT INTO Departments
VALUES
(1, 'Engineering'),
(2, 'Sales');

INSERT INTO Projects
VALUES
(1, 'Project 1', 1),
(2, 'Project 2', 2);

INSERT INTO EmployeeProjects
VALUES
(1, 1, 10),
(2, 1, 20),
(3, 2, 15);


DELETE EP
FROM EmployeeProjects EP
INNER JOIN Employees E ON EP.EmployeeID = E.EmployeeID
INNER JOIN Projects P ON EP.ProjectID = P.ProjectID
INNER JOIN Departments D ON P.DepartmentID = D.DepartmentID
WHERE E.Name = 'Mary' AND D.DepartmentName = 'Sales'

در اینجا 4 جدول داریم که به هم مرتبط هستند. با استفاده از سه عملیات JOIN، سطر مربوط به Mary در پروژه شماره 2 دپارتمان Sales حذف می‌شود.
این مثال پیچیده‌تری از حذف با JOIN در SQL Server است. اگر سوالی داشتید، در خدمتم!