ایجاد سه جدول در SQL به همراه رلیشن بین آنها
در پایگاه داده SQL Server سه جدول ایجاد می کنیم که با هم ارتباط داشته باشند و سپس یک کوئری JOIN برای آنها می نویسیم. فرض کنید جداولی برای مدیریت اطلاعات مشتریان، سفارشات و محصولات داریم.
1. ایجاد جداول
جدول Customers
CREATE TABLE Customers ( CustomerID INT PRIMARY KEY, FirstName VARCHAR(50), LastName VARCHAR(50), Email VARCHAR(100) );
جدول Products
CREATE TABLE Products ( ProductID INT PRIMARY KEY, ProductName VARCHAR(100), Price DECIMAL(10, 2) );
جدول Orders
CREATE TABLE Orders ( OrderID INT PRIMARY KEY, CustomerID INT, ProductID INT, OrderDate DATE, Quantity INT, FOREIGN KEY (CustomerID) REFERENCES Customers(CustomerID), FOREIGN KEY (ProductID) REFERENCES Products(ProductID) );
2. افزودن رکوردها به جداول
رکوردهای جدول Customers
INSERT INTO Customers (CustomerID, FirstName, LastName, Email) VALUES (1, 'John', 'Doe', 'john.doe@example.com'), (2, 'Jane', 'Smith', 'jane.smith@example.com'), (3, 'Alice', 'Johnson', 'alice.johnson@example.com');
رکوردهای جدول Products
INSERT INTO Products (ProductID, ProductName, Price) VALUES (1, 'Laptop', 800.00), (2, 'Smartphone', 600.00), (3, 'Tablet', 300.00);
رکوردهای جدول Orders
INSERT INTO Orders (OrderID, CustomerID, ProductID, OrderDate, Quantity) VALUES (1, 1, 1, '2023-10-01', 1), (2, 1, 2, '2023-10-15', 2), (3, 2, 3, '2023-10-20', 1), (4, 3, 1, '2023-10-22', 3);
3. اجرای کوئریهای JOIN
کوئری 1: INNER JOIN برای نمایش اطلاعات سفارشات به همراه نام مشتری و محصول
SELECT Customers.FirstName, Customers.LastName, Products.ProductName, Orders.OrderDate, Orders.Quantity FROM Orders INNER JOIN Customers ON Orders.CustomerID = Customers.CustomerID INNER JOIN Products ON Orders.ProductID = Products.ProductID;
توضیح: این کوئری اطلاعات سفارشات را به همراه نام مشتری و نام محصول نمایش میدهد.
کوئری 2: LEFT JOIN برای نمایش تمامی مشتریان و سفارشاتشان (حتی اگر سفارشی نداشته باشند)
SELECT Customers.FirstName, Customers.LastName, Orders.OrderDate, Orders.Quantity, Products.ProductName FROM Customers LEFT JOIN Orders ON Customers.CustomerID = Orders.CustomerID LEFT JOIN Products ON Orders.ProductID = Products.ProductID;
توضیح: این کوئری تمامی مشتریان را نمایش میدهد، حتی اگر سفارشی نداشته باشند. اگر سفارشی موجود باشد، اطلاعات سفارش و محصول نیز نمایش داده میشود.
کوئری 3: نمایش مجموع مبلغ سفارشات هر مشتری
SELECT Customers.FirstName, Customers.LastName, SUM(Orders.Quantity * Products.Price) AS TotalSpent FROM Customers INNER JOIN Orders ON Customers.CustomerID = Orders.CustomerID INNER JOIN Products ON Orders.ProductID = Products.ProductID GROUP BY Customers.FirstName, Customers.LastName;
توضیح: این کوئری مجموع مبلغ سفارشات هر مشتری را محاسبه و نمایش میدهد.
این مثالها نحوه ایجاد جداول، افزودن رکوردها و اجرای کوئریهای JOIN در پایگاه داده SQL Server را نشان میدهند.