نقل قول: معما از نوع SQL Server .
سلام.
این تاپیک رو بالا آوردم تا دوباره معماهای جدید رو مطرح کنیم.
خوب برای شروع به سوال زیر پاسخ دهید.
دستورات زیر رو اجراکنید.
CREATE TABLE Employee
(
EmployeeID INT,
EmployeeName VARCHAR(30),
Country VARCHAR(20)
);
CREATE TABLE Orders
(
EmployeeId INT,
OrderId INT,
Price Money
);
INSERT INTO Employee
VALUES(1,'Martin','Canada'),
(2,'Jim','USA'),
(3,'Steve','Turkey');
INSERT INTO Orders
VALUES(1,1,10000),
(1,2,20000),
(1,3,54000),
(3,1,18700),
(3,2,9768),
(3,3,7577887);
خوب حالا ما میخواهیم لیست مشتریانی که فروش نداشتند و کشور آنها USA هست رو بدست بیاریم.
ابتدا دستور زیر رو اجرا میکنیم.
SELECT E.EmployeeId,E.EmployeeName,O.EmployeeId,o.OrderId ,o.Price
FROM Employee e
LEFT OUTER JOIN
Orders o
ON o.EmployeeId=E.EmployeeID
AND E.Country='USA'
ولی نتیجه دلخواه رو به مانمیده و جواب اشتباه برمیگردونه در صورتی که ما میتوانیم شرط رو در عبارت ON هم بنویسیم.
حال به شکل زیر دستورو مینویسیم.
SELECT E.EmployeeId,E.EmployeeName,O.EmployeeId,o.OrderId ,o.Price
FROM Employee e
LEFT OUTER JOIN
Orders o
ON o.EmployeeId=E.EmployeeID
Where E.Country='Usa'
الان مشتری شماره 2 را برمیگرداند.
چه تفاوتی بین نوشتن شرط در ON و Where هست؟
چرا با تغییر شرط نتیجه ما تغییر کرد؟