Cám ơn thầy vì bài giảng Bài tập 1: SELECT O.OrderID, C.CompanyName AS [CUSTOMER NAME], S.CompanyName FROM ORDERS AS O, Customers AS C, Shippers AS S WHERE O.CustomerID = C.CustomerID AND S.ShipperID = O.ShipVia AND O.ShipCountry = 'UK' AND YEAR(O.ShippedDate) = 1997; Câu hỏi giao lưu: 1/ Từ 3 bảng products, order details, suppliers, tìm những sản phẩm có discount khác 0 . In ra mã sản phẩm. tên sản phẩm, tên cty cung cấp sản phẩm và discount 2/ Từ bảng orders, employees, tìm tổng số tiền đơn hàng của từng nhân viên đang phụ trách. In ra mã nv, tên nv và tổng số tiền.
--BT1: từ bảng 3 trong hình hãy in ra các thông tin sau đây: --mã đơn hàng, tên khách hàng, tên công ty vận chuyển --và chỉ ra các đơn hàng được chuyển đến 'Uk' trong năm 1997 select o.OrderID, c.ContactName, s.CompanyName, o.ShipCountry, year(o.ShippedDate) as [year] from [dbo].[Orders] as o, [dbo].[Customers] as c, [dbo].[Shippers] as s where o.CustomerID = c.CustomerID and o.ShipVia = s.ShipperID and o.ShipCountry ='Uk' and year(o.ShippedDate)=1997 -->kết quả 26 rows
--Từ ba bảng trong hình hãy in ra các thông tin sau đây: --Mã đơn hàng --Tên khách hàng --Tên công ty vận chuyển ---Và chỉ in ra các đơn hàng đến 'UK' trong năm 1997 Select o.[OrderID], c.CustomerID, s.CompanyName, YEAR(o.ShippedDate), o.ShipCountry From [dbo].[Orders] as o, [dbo].[Shippers] as s, [dbo].[Customers] as c Where o.CustomerID = c.CustomerID AND o.ShipVia = s.ShipperID AND YEAR(o.ShippedDate) = 1997 AND o.ShipCountry ='UK'
Chỗ 13:15 em thấy là select với group by các cột phải giống nhau nếu ở trên là O.[EmployeeID) mà dưới group by là E.[EmployeeID) thì nó sẽ báo lỗi mặc dù cả 2 bằng nhau
-- Bài tập 1: Từ 3 bảng Orders, Customers, Shippers in ra các thôgn tin sau: --Mã đơn hàng --Tên khách hàng --Tên công ty vận chuyển --Và chỉ in ra các đơn hàng được giao đến "UK" trong năm 1997 SELECT [O].[OrderID], C.[ContactName], S.[CompanyName], O.[OrderDate], O.[ShipCountry] FROM [dbo].[Orders] AS O, [dbo].[Customers] AS C, [dbo].[Shippers] AS S WHERE C.[CustomerID] = O.[CustomerID] AND S.[ShipperID] = O.[ShipVia] AND O.[OrderDate] BETWEEN '1997-01-01' AND '1997-12-31' AND O.[ShipCountry] = 'UK' Dạ em cam ơn anh ạ!
Câu hỏi 1: Dạ nếu mình đặt alias cho các bảng bị trùng nhau thì khi đặt hệ thống có cảnh báo là tên ALIAS này đã tồn tại không ạ Thầy. Em cảm ơn Thầy ạ.
-- Bài tập 1 SELECT o.OrderID, c.ContactName, s.CompanyName FROM Orders AS o, Shippers AS s, Customers AS c WHERE o.CustomerID = c.CustomerID AND o.ShipVia = s.ShipperID AND ShipCountry = 'UK' AND YEAR(ShippedDate) = 1997 -- Thử thách 1 -- Hãy đưa ra đơn hàng có giá cao nhất từ 2 bảng Order và Order Detail. -- Lưu ý: Phải tính cả mã giảm giá -- Thử thách 2 -- Đưa ra thông tin của 3 nhân viên đã giao được nhiều hàng nhất trong tháng 6 -- Từ bảng Employees và bảng Orders
Cảm ơn thầy , bài tập 1 : SELECT o.OrderID , o.CustomerID , s.CompanyName ,o.ShipCountry , o.ShippedDate FROM Customers as c , Orders as o, Shippers as s WHERE c.CustomerID = o.CustomerID AND s.ShipperID = o.ShipVia AND o.ShipCountry='UK' AND YEAR(o.ShippedDate)=1997 GROUP BY o.OrderID , o.CustomerID , s.CompanyName ,o.ShipCountry , o.ShippedDate
Anh có video dạy về cơ sở dữ liệu, thiết kế hệ thống với chuẩn hóa dữ liệu không ạ? vì các video của anh nói về các cái mối quan hệ (một nhiều, nhiều nhiều,...) nhưng lại không có video giải thích
Cám ơn những bài học của anh! SELECT o.OrderID, c.ContactName, s.CompanyName FROM dbo.Orders AS o, dbo.Customers AS c, dbo.Shippers AS s WHERE o.CustomerID = c.CustomerID AND s.ShipperID = o.ShipVia AND YEAR(o.ShippedDate) = 1997 AND o.ShipCountry = 'UK';
--Từ 3 bảng customer, orders, shippers in ra thông tin --mã đơn hàng, tên khách hàng, tên công ty vận chuyển --Chỉ in ra các đơn hàng đến UK năm 1997 select o.OrderID, c.CompanyName, s.CompanyName from [dbo].[Customers] as c, [dbo].[Shippers] as s, [dbo].[Orders] as o where o.CustomerID = c.CustomerID and o.ShipVia= s.ShipperID and o.ShipCountry = 'UK' and year([ShippedDate]) = 1997
Thử thách: Từ bảng Employee và Order, lọc ra mã nhân viên, họ và tên nhân viên (gom 2 cột last name và first name vào 1 cột đặt tên cột là họ và tên ví dụ: Davolio Nancy), số lượng đơn hàng mà nhân viên bán được lớn hơn 100 và nhân viên có quốc tịch (country) là Mỹ. Sắp xếp theo số lượng tăng dần của đơn hàng bán được
gửi bạn đáp án của mình nha: select e.EmployeeID, (e.LastName + ' ' + e.FirstName) as FullName, count(o.OrderID) as TotalOrders from [Employees] as e, [Orders] as o where o.EmployeeID = e.EmployeeID and e.Country like 'usa' group by e.EmployeeID, e.LastName, e.FirstName having count(o.OrderID) > 100 order by TotalOrders asc ;
16:53 em bổ sung thêm câu UK vào bài làm ạ SELECT C.CustomerID, C.CompanyName, C.ContactName, C.Country, COUNT(O.OrderID) AS [SL ĐƠN] FROM Customers AS C, Orders AS O WHERE C.Country LIKE 'UK' AND C.CustomerID = O.CustomerID GROUP BY C.CustomerID, C.CompanyName, C.ContactName, C.Country; BT1: SELECT O.OrderID, C.ContactName, S.CompanyName, O.ShipCountry, O.ShippedDate FROM Customers AS C, Shippers AS S, Orders AS O WHERE C.CustomerID = O.CustomerID AND S.ShipperID = O.ShipVia AND O.ShipCountry = 'UK' AND YEAR(O.ShippedDate) = 1997 GROUP BY O.OrderID, C.ContactName, S.CompanyName, O.ShipCountry, O.ShippedDate;
đã học hết 22 bài trc, học kiểu có đề là động não và 90% là đúng, sang cái này kiểu nghi ngờ nhân sinh thật sự, kiểu sao nó nhiều thế, cứ nhìn yêu cầu viết truy vấn ư, không có j khác support à ? khó thật sự, xong vụ nhân 2 bảng với nhau qua tích đề các cũng chẳng nhớ, group by thì đến 3 trg, thề e chẳng thể động não nổi là cần làm cái j, mong cách truy vấn trên nhiều bảng còn lại dễ thở hơn
công nhận :))) sang cái bài này thấy nghi ngờ bản thân luôn, anh ý ko hướng dẫn rõ là khi SELECT thì SELECT c.CustomerID hay o.CustomerID (nếu như cả 2 table đều có CustomerID), GROUP BY thì phải GROUP BY cả 3 column, đoạn này hơi khó hiểu nhỉ :))
Giải bài tập 1 select o.OrderID, c.ContactName, s.CompanyName, o.ShipCountry from Orders o join Shippers s on o.ShipVia = s.ShipperID join Customers c on o.CustomerID = c.CustomerID where ShipCountry = 'UK' and o.ShippedDate between '1997-01-01' and '1997-12-31' Kết quả 26 rows
Mine : --từ 3 bảng Shippers, orders, Customers --xuất ra thông tin mã đơn hàng, tên khách hàng, tên công ty vận chuyển --và chỉ in ra các đơn hàng được giao đến UK trong năm 1997 SELECT o.OrderID, c.ContactName, s.CompanyName, o.ShipCountry, o.RequiredDate FROM Orders as "o", Shippers as "s", Customers as "c" WHERE o.ShipVia = s.ShipperID and c.CustomerID = o.CustomerID and o.ShipCountry = 'UK' and Year(o.RequiredDate) = '1997'
thầy ơi em làm ví dụ 5 như thế này đc ko ạ WITH t AS ( SELECT s.SupplierID , s.CompanyName , COUNT(p.ProductID) 'TotalProduct' FROM Products p JOIN Suppliers s ON p.SupplierID = s.SupplierID GROUP BY s.[SupplierID] , s.CompanyName ) SELECT * FROM t WHERE t.TotalProduct = (SELECT MAX(TotalProduct) FROM t)
-- BÀI TẬP 1: Từ 3 bảng Customers, Orders, shippers hãy in ra các thông tin sau đây: --Mã đơn hàng --Tên khách hàng --Tên công ty vận chuyển --và chỉ in ra các đơn hàng được giao đến 'UK' trong năm 1997. SELECT o.OrderID, c.ContactName,s.CompanyName FROM [dbo].[Customers] AS c, [dbo].[Orders] AS o, [dbo].[Shippers] AS s WHERE c.CustomerID = o.CustomerID AND o.ShipVia = s.ShipperID AND o.ShipCountry='UK' AND YEAR(o.ShippedDate)=1997 GROUP BY o.OrderID, c.ContactName,s.CompanyName => kết quả: 26 rows
Câu hỏi 2: Từ 3 bảng products, order detail, và orders hãy lấy ra tên sản phẩm, giá trị trung bình cho từng sản phẩm và chi phí giao hàng. sao cho tên sản phẩm sắp xếp từ a-z và chỉ lấy top 10 sản phẩm có giá trung bình cao nhất.
-- Bài tập: Từ ba bảng Customers, Orders, Shippers hãy in a các thông -- tin sau: -- Mã đơn hàng -- Tên khách hàng -- Tên công ty vận chuyển -- Và chỉ in ra các đơn hàng được giao đến 'UK' trong năm 1997 SELECT O.OrderID,C.[ContactName],S.CompanyName FROM [dbo].[Customers] AS C,[dbo].[Orders] AS O,[dbo].[Shippers] AS S WHERE O.CustomerID=C.CustomerID AND o.ShipVia=S.ShipperID AND O.ShipCountry='UK' AND YEAR(O.ShippedDate)=1997
select c.[CustomerID],[CompanyName],[ContactName],count(o.[OrderID]) as [số đơn hàng đã mua],[ShipCountry] from [dbo].[Customers] as c,[dbo].[Orders] as o where c.[CustomerID] =o.[CustomerID] and [ShipCountry] ='UK' group by c.[CustomerID],[CompanyName],[ContactName],[ShipCountry] sẵn a xem giúp em làm vậy đúng ko ạ,ví dụ 3
--VD8: Hãy cho biết những thành phố nào có số lượng đơn hàng được giao là khác 1 và 2, ngày đặt hàng từ '1997-04-01' đến '1997-08-31' Select o.[ShipCountry], COUNT (o.[ShipCountry]) as Qty From [dbo].[Orders] as o Where o.[OrderDate] BETWEEN '1997-04-01' AND '1997-08-31' Group by [ShipCountry] Having COUNT (o.[ShipCountry]) NOT IN (1,2)
Đáp án của em: SELECT o.OrderID, c.CustomerID, s.CompanyName,o.ShipCountry,o.ShippedDate FROM Orders AS o, Customers AS c, Shippers AS s WHERE (o.CustomerID=c.CustomerID AND o.ShipVia= s.ShipperID) AND (o.ShipCountry='UK' AND YEAR(o.ShippedDate)='1997' ) GROUP BY o.OrderID, c.CustomerID, s.CompanyName,o.ShipCountry,o.ShippedDate
Em gửi anh câu trả lời SELECT O.OrderID, C.CustomerID, S.CompanyName, O.ShipCountry, O.OrderDate FROM DBO.Orders AS O, DBO.Customers AS C, DBO.Shippers AS S WHERE O.CustomerID = C.CustomerID AND O.ShipVia = S.ShipperID AND O.ShipCountry = 'UK' AND YEAR (O.OrderDate)='1997' (30 rows affected)
Hình như ví dụ 4 thầy có thiếu đk cuối, em xin phép bổ sung: SELECT c.CustomerID,c.CompanyName,c.ContactName,COUNT(o.OrderID) FROM dbo.Customers AS c, dbo.Orders AS o WHERE c.Country='UK' AND ( c.CustomerID=o.CustomerID) GROUP BY c.CustomerID,c.CompanyName,c.ContactName
-Bài tập 1: SELECT o.OrderID, c.CustomerID, s.CompanyName FROM dbo.Orders AS o,dbo.Customers AS c, dbo.Shippers AS s WHERE o.CustomerID = c.CustomerID AND o.ShipVia = s.ShipperID AND o.ShipCountry = 'UK' AND YEAR(o.ShippedDate) = 1997;
Cảm thấy như Phạm Nhật Vượng 🤣🤣 select b.OrderID,a.CustomerID,b.ShipName,b.ShipCountry from Customers as a,Orders as b,Shippers as c where a.CustomerID = b.CustomerID and c.ShipperID = b.ShipVia and b.ShipCountry like 'UK' and Year(ShippedDate) = 1997
Em bổ sung bài tập 3 đề có yêu cầu là country = uk nữa : SELECT C.CustomerID, C.CompanyName,C.ContactName,COUNT(O.[OrderID]) AS [TOTAL ORDERS] FROM [dbo].[Customers] AS C, [dbo].[Orders] AS O WHERE C.CustomerID = O.CustomerID AND C.Country='UK' GROUP BY C.CustomerID,C.CompanyName,C.ContactName
em xin giải bài tập: SELECT o.OrderID, c.ContactName, s.CompanyName, c.Country, o.ShippedDate FROM Orders AS o, Shippers AS s, Customers AS c WHERE (o.CustomerID = c.CustomerID AND o.ShipVia = s.ShipperID) AND (o.ShipCountry ='UK' AND YEAR(o.ShippedDate) = 1997) ;
cam on thay a em tra bai tap select o.OrderID, c.ContactName, sh.CompanyName from Customers as c, Orders as o, Shippers as sh where o.CustomerID = c.CustomerID and sh.ShipperID = o.ShipVia and o.ShipCountry = 'UK' and year(o.ShippedDate) = 1997
bài 3 hình như a quên dk khách hàng ở QG là UK SELECT c.CustomerID, c.CompanyName, c.ContactName,c.Country ,COUNT (o.OrderID) AS " Total Orede" FROM dbo.Customers AS c, dbo.Orders AS o WHERE c.CustomerID = o.CustomerID AND c.Country = 'UK' GROUP BY c.CustomerID, c.CompanyName,c.ContactName,c.Country;
-- Bài tập 1 SELECT o.OrderID, c.ContactName, s.CompanyName FROM dbo.Customers as c, dbo.Orders as o, dbo.Shippers as s WHERE c.CustomerID = o.CustomerID AND s.ShipperID = o.ShipVia AND ShipCountry LIKE 'UK' AND YEAR(ShippedDate) = 1997 -- Thử thách 1: Hiển thị ra danh sách tên nhà cung cấp và tên các sản phẩm của họ -- Thử thách 2: Hiển thị ra mã nhân viên, tên nhân viên , tên các sản phẩm họ đã giao và tổng số sản phẩm đó
Câu lệnh giải bài tập : SELECT Od.OrderID AS [Mã ĐH], Cus.ContactName AS [Tên KH], Ship.CompanyName AS [Tên CTY Vận Chuyển] FROM Orders AS Od, Customers AS Cus, Shippers AS Ship WHERE Od.ShipCountry = 'UK' AND YEAR(Od.ShippedDate) = '1997' AND Od.CustomerID = Cus.CustomerID AND Od.ShipVia = Ship.ShipperID
SELECT o.OrderID,c.CustomerID,c.CompanyName,s.CompanyName FROM [dbo].[Customers] AS c,[dbo].[Suppliers] AS s,[dbo].[Orders] AS o WHERE c.CustomerID=o.CustomerID AND s.SupplierID=o.ShipVia AND o.[ShipCountry] = 'UK' AND YEAR(o.ShippedDate) = 1997; Em cảm ơn
select o.OrderID, c.CustomerID, s.CompanyName, o.ShipCountry, o.ShippedDate from [dbo].[Orders] as o, [dbo].[Customers] as c, [dbo].[Shippers] as s where o.CustomerID = c.CustomerID and s.ShipperID = o.ShipVia and YEAR(ShippedDate) = 1997 and o.ShipCountry = 'UK'
-- Giải BT1 SELECT o.OrderID ,c.ContactName,s.CompanyName , year (o.ShippedDate ) as "Năm",o.ShipCountry FROM [dbo].[Customers] as "c",[dbo].[Orders] as "o",[dbo].[Shippers] as "s" WHERE o.ShipCountry = 'UK' and year (o.ShippedDate )='1997' GROUP BY o.OrderID ,c.ContactName,s.CompanyName , year (o.ShippedDate ) ,o.ShipCountry; -- Thử thách -- 1. In ra [OrderID],[ContactName],[RequiredDate],[ShipCity] -- Với điều kiện chỉ đến London và RequiredDate = [20 , 24]. -- Từ bảng Orders và bảng Customers, -- 2. In ra [ProductName],[CompanyName], Lượng hàng tồn -- Yêu cầu : in ra 3 công ty có lượng hàng tồn cao nhất. -- Từ bảng Products và bảng Customers.
em gửi bài tập ạ SELECT O.OrderID, C.ContactName, S.CompanyName FROM [dbo].[Orders] AS O, [dbo].[Customers] AS C, [dbo].[Shippers] AS S WHERE C.CustomerID = O.CustomerID AND S.ShipperID = O.ShipVia and o.ShipCountry = 'uk' and year(o.[ShippedDate])='1997'
-- BAI TAP VE NHA: Tu 3 bang "Customers", "Orders", "Shippers", hay in ra: -- Ma don hang; -- Ten khach hang; -- Ten cty van chuyen; -- Va chi lay ra cac don hang duoc giao den "UK" trong nam 1997; SELECT o.OrderID, c.ContactName, s.CompanyName , YEAR(o.ShippedDate) AS [year] FROM dbo.Orders AS o, dbo.Customers AS c, dbo.Shippers AS s WHERE o.CustomerID = c.CustomerID AND o.ShipVia = s.ShipperID AND o.ShipCountry='UK' AND YEAR(o.ShippedDate)='1997' GROUP BY o.OrderID, c.ContactName, s.CompanyName, YEAR(o.ShippedDate);
BT 1 SELECT O.OrderID, C.CompanyName, S.CompanyName FROM [dbo].[Orders] AS O, [dbo].[Customers] AS C, [dbo].[Shippers] AS S WHERE O.CustomerID = C.CustomerID AND S.ShipperID = O.ShipVia AND O.ShipCountry = 'UK' AND YEAR (O.ShippedDate) = 1997 MINH RA 26 DONG Thử thách: Tu bang Suppliers, Product, Order detail lấy ra mã nhà cung cấp, địa chỉ nhà cung cấp, sl đặt hàng và chiết khấu, tính trung bình giá bán của các sản phẩm cho mỗi nhà cung cấp, chỉ lấy 5 KQ đầu
Cái ví dụ 2. Bạn nào muốn gọp họ và tên vào chung 1 cột thì có thể thử cách này nha select e.EmployeeID, e.FirstName +' '+ e.LastName as [Họ và tên],count(o.OrderID) as [Số đơn hàng bán được] from Employees as e, Orders as o where e.EmployeeID = o.EmployeeID group by o.EmployeeID, e.EmployeeID, e.FirstName +' '+ e.LastName
--Từ 3 bảng Orders, Customers, Shippers hãy in ra các thông tin sau --Mã đơn hàng --Tên khách hàng --Tên công ty vận chuyển --Và chỉ in ra các đơn hàng được giao đến UK vào năm 1997 SELECT O.OrderID, C.ContactName, S.CompanyName, C.Country, O.ShippedDate FROM [dbo].[Orders] AS O, [dbo].[Customers] AS C, [dbo].[Shippers] AS S WHERE S.ShipperID = O.ShipVia AND C.CustomerID = O.CustomerID AND C.Country = 'UK' AND YEAR(O.ShippedDate) = 1997;
--lấy ra các thông tin: mã đơn hàng, tên khách hàng, Tên công ty vận chuyển, --và chỉ in ra các đơn hàng được giao đến 'UK' trong năm 1997 SELECT o.[OrderID], c.[ContactName] AS [Tên Khách Hàng], o.[ShipName] AS [Tên Công Ty Vận Chuyển] FROM [dbo].[Orders] AS o JOIN [dbo].[Customers] AS c ON o.[CustomerID] = c.[CustomerID] WHERE o.[ShipCountry] = 'UK' AND YEAR(o.[ShippedDate]) = 1997;
SELECT o.[OrderID],c.[CompanyName], s.[CompanyName],year(o.(ShippedDate)),o.[Shipcountry] from [dbo].[Orders] as o, [dbo].[Customers] as c, [dbo].[Shippers] as s where o.[CustomerID] = c.[CustomerID] and o.[ShipVia]=s.[ShipID] and o.[Shipcountry]='UK' and year(o.(ShippedDate))='1997'
SELECT 0.[OrderID],o.[CustomerID],s.[CompanyName],o.[ShipCountry],o.[ShippedDate] FROM [dbo].[Customers] AS "c", [dbo].[Orders] AS "o", [dbo].[Shippers] AS "s" WHERE o.[ShipCountry]='UK'AND YEAR(o.[ShippedDate])=1997 AND c.[CustomerID]=o.[CustomerID] AND o.[ShipVia]=s.[ShipperID];
BT SELECT o.OrderID, c.ContactName, s.CompanyName FROM dbo.Customers AS c, dbo.Orders AS o, dbo.Shippers AS s WHERE c.CustomerID = o.CustomerID AND o.ShipVia = s.ShipperID AND o.ShipCountry = 'UK' AND YEAR(o.OrderDate) = 1997; ==> 30 dòng Cám ơn anh :)
select o.OrderID,c.ContactName,s.CompanyName,o.ShipCountry,o.ShippedDate from Orders as o,Customers as c,Shippers as s where o.ShipCountry = 'UK'and YEAR(ShippedDate) = 1997 and o.CustomerID = c.CustomerID and o.ShipVia = s.ShipperID
BT1: SELECT o.OrderID, c.ContactName, s.CompanyName, o.ShipCountry, YEAR(o.OrderDate) AS "Year" FROM [dbo].[Orders] AS o, [dbo].[Customers] AS c, [dbo].[Shippers] AS s WHERE o.CustomerID=c.CustomerID AND o.ShipVia=s.ShipperID AND o.ShipCountry LIKE 'UK' AND YEAR(o.OrderDate)=1997 GROUP BY o.OrderID, c.ContactName, s.CompanyName, o.ShipCountry, YEAR(o.OrderDate);
BT: SELECT O.OrderID, C.ContactName, S.CompanyName, O.ShipCountry, YEAR(O.ShippedDate) AS Year FROM Orders AS O, Customers AS C, Shippers AS S WHERE O.ShipCountry = 'UK' AND C.CustomerID = O.CustomerID AND O.ShipVia = S.ShipperID AND YEAR(O.ShippedDate) = 1997;
select o.OrderID, c.ContactName, c.CompanyName, o.OrderID, o.OrderDate from [dbo].[Customers] as c, [dbo].[Orders] as o, [dbo].[Shippers] as s where o.CustomerID = c.CustomerID and o.ShipVia = s.ShipperID and o.ShipCountry ='UK' and year(o.OrderDate) = 1997
select o.OrderID, c.ContactName, s.CompanyName, o.ShipCountry, o.ShippedDate from Customers as c, Orders as o, Shippers as s where c.CustomerID=o.CustomerID and o.ShipVia=s.ShipperID and o.ShipCountry like 'UK' and o.ShippedDate like '%1997%';
VD bổ sung SELECT C.CustomerID, C.CompanyName, C.ContactName,[ShipCountry], COUNT(O.[OrderID]) AS [TotalOders] FROM [dbo].[Customers] AS C , [dbo].[Orders] AS O WHERE C.CustomerID = O.CustomerID AND [ShipCountry] = 'UK' GROUP BY C.CustomerID, C.CompanyName, C.ContactName,[ShipCountry];
SELECT o.OrderID, c.CompanyName as 'NameCustomers', s.CompanyName as 'NameShippers', o.ShipCountry, o.ShippedDate FROM Customers AS c, Orders as o, Shippers as s WHERE c.CustomerID = o.CustomerID AND s.ShipperID = o.ShipVia AND o.ShipCountry LIKE 'uk' AND YEAR(O.ShippedDate) = '1997';
use NORTHWND select o.OrderID, c.ContactName, s.CompanyName, YEAR(o.ShippedDate) as "Year Shipped", o.ShipCountry from [dbo].[Orders] as o, [dbo].[Customers] as c, [dbo].[Shippers] as s where c.CustomerID = o.CustomerID AND o.ShipVia = s.ShipperID AND o.ShipCountry = 'UK' AND YEAR(o.ShippedDate)=1997
SELECT o.[OrderID],c.[ContactName],c.[CompannyName], o.[ShipCountry], YEAR([ShippedDate]) FROM [Orders] AS o, [Customers] AS c WHERE o.[ShipCountry[='UK' AND YEAR([ShippedDate])=1997
Select O.OrderID,C.ContactName,S.CompanyName From [dbo].[Orders] as O,[dbo].[Customers] as C, Shippers as S Where O.ShipCountry ='UK' and Year(O.ShippedDate) =1997 and C.CustomerID = O.CustomerID and S.ShipperID = S.ShipperID Group By O.OrderID,C.ContactName,S.CompanyName
select o.CustomerID , c.ContactName , s.CompanyName, o.ShipCountry, o.ShippedDate from [dbo].[Customers] as c , [dbo].[Orders] as o ,[dbo].[Shippers] as s where o.CustomerID = c.CustomerID and o.ShipVia = s.ShipperID and o.ShipCountry = 'UK' and year(o.ShippedDate) = 1997 group by o.CustomerID , c.ContactName , s.CompanyName, o.ShipCountry, o.ShippedDate
select o.OrderID, c.ContactName, s.CompanyName, o.ShipCountry, year(o.[ShippedDate]) as [year] from [dbo].[Orders] as o, [dbo].[Customers] as c, [dbo].[Shippers] as s where o.CustomerID = c.CustomerID and o.ShipVia = s.ShipperID group by o.OrderID, c.ContactName, s.CompanyName, o.ShipCountry, o.ShippedDate having o.ShipCountry like 'UK' and year(o.[ShippedDate])=1997 order by o.ShipCountry asc;
SELECT o.OrderID, c.ContactName, s.CompanyName, o.ShippedDate FROM [dbo].[Orders] AS o, [dbo].[Customers] AS c, [dbo].[Shippers] AS s WHERE o.CustomerID = c.CustomerID AND o.ShipVia = s.ShipperID AND o.ShipCountry = 'UK' AND --o.ShippedDate BETWEEN '1997-1-1' AND '1997-12-31' YEAR(o.ShippedDate) = 1997 -- nhanh hơn so vs dòng trên GROUP BY o.OrderID, c.ContactName, s.CompanyName, o.ShippedDate ORDER BY o.ShippedDate. 26 dòng
select o.OrderID, c.ContactName,s.CompanyName,o.ShipCountry,O.ShippedDate, count(o.OrderID) from Customers as c , Orders as o , Shippers as s where c.CustomerID=o.CustomerID and s.ShipperID=o.ShipVia group by o.OrderID, c.ContactName,s.CompanyName ,o.ShippedDate,o.ShipCountry having YEAR(o.ShippedDate) = '1997' and o.ShipCountry in ('UK');
SELECT o.OrderID, c.ContactName, s.CompanyName FROM Customers AS c, Orders AS o, Shippers AS s WHERE o.ShipVia=s.ShipperID AND c.CustomerID=o.CustomerID AND o.ShipCountry='UK' AND YEAR(o.ShippedDate)=1997
Dap an SELECT o.OrderID, c.ContactName, s.CompanyName FROM dbo.Customers AS c, dbo.Shippers AS s, dbo.Orders AS o WHERE YEAR(o.ShippedDate)=1997 AND ShipCountry='UK' AND o.CustomerID=c.CustomerID AND s.ShipperID=o.ShipVia GROUP BY o.OrderID , c.ContactName, s.CompanyName
SELECT o.OrderID AS "Ma Don Hang" , c.ContactName AS "Ten Khach Hang", s.CompanyName AS "Ten Don Vi Van Chuyen" FROM Orders AS o, Customers AS c, Shippers AS s WHERE (c.CustomerID = o.CustomerID AND o.ShipVia = s.ShipperID )AND( o.ShipCountry LIKE "UK" AND Year(o.ShippedDate) = "1997" ) GROUP BY o.OrderID , c.ContactName , s.CompanyName
SELECT o.OrderID, c.ContactName, s.CompanyName FROM Orders as o, Customers as c, Shippers as s WHERE o.ShipCountry = 'UK' AND YEAR(o.OrderDate) = '1997' AND o.CustomerId = c.CustomerID AND s.ShipperID = o.ShipVia ORDER BY c.ContactName DESC;
SELECT o.OrderID,c.ContactName,s.CompanyName,[ShippedDate] FROM dbo.Orders AS o, dbo.Customers AS c, dbo.Shippers AS s WHERE o.CustomerID=c.CustomerID AND s.ShipperID=o.ShipVia AND o.ShipCountry ='UK' AND YEAR([ShippedDate])= 1997 GROUP BY o.OrderID,c.ContactName,s.CompanyName,[ShippedDate] Em cảm ơn ạ
bt1 SELECT o.OrderID, c.ContactName, s.ShipperID, s.CompanyName, o.ShipCountry, o.OrderDate FROM [dbo].[Customers] as c, [dbo].[Orders] as o, [dbo].[Shippers] as s WHERE o.CustomerID = c.CustomerID AND s.ShipperID = o.ShipVia AND o.ShipCountry LIKE 'UK' AND YEAR(o.OrderDate) = 1997 GROUP BY o.OrderID, c.ContactName, s.ShipperID, s.CompanyName, o.ShipCountry, o.OrderDate;
bt1 WITH t AS ( SELECT o.OrderID , c.ContactName , s.CompanyName , Year(o.ShippedDate) 'Year' ,o.ShipCountry 'ShipCountry' FROM Orders o JOIN Customers c ON o.CustomerID = c.CustomerID JOIN Shippers s ON o.ShipVia = s.ShipperID GROUP BY o.OrderID , c.ContactName , s.CompanyName , Year(o.ShippedDate) ,o.ShipCountry ) SELECT * FROM t WHERE t.ShipCountry = 'UK' and t.Year='1997'
Cám ơn thầy vì bài giảng
Bài tập 1:
SELECT O.OrderID, C.CompanyName AS [CUSTOMER NAME], S.CompanyName
FROM ORDERS AS O, Customers AS C, Shippers AS S
WHERE O.CustomerID = C.CustomerID AND S.ShipperID = O.ShipVia AND O.ShipCountry = 'UK' AND YEAR(O.ShippedDate) = 1997;
Câu hỏi giao lưu:
1/ Từ 3 bảng products, order details, suppliers, tìm những sản phẩm có discount khác 0 . In ra mã sản phẩm. tên sản phẩm, tên cty cung cấp sản phẩm và discount
2/ Từ bảng orders, employees, tìm tổng số tiền đơn hàng của từng nhân viên đang phụ trách. In ra mã nv, tên nv và tổng số tiền.
Anh dạy ngắn gọn, xúc tích và rất dễ hiểu. Cảm ơn rất nhiều.
--BT1: từ bảng 3 trong hình hãy in ra các thông tin sau đây:
--mã đơn hàng, tên khách hàng, tên công ty vận chuyển
--và chỉ ra các đơn hàng được chuyển đến 'Uk' trong năm 1997
select o.OrderID, c.ContactName, s.CompanyName, o.ShipCountry, year(o.ShippedDate) as [year]
from [dbo].[Orders] as o, [dbo].[Customers] as c, [dbo].[Shippers] as s
where o.CustomerID = c.CustomerID and o.ShipVia = s.ShipperID and o.ShipCountry ='Uk' and year(o.ShippedDate)=1997
-->kết quả 26 rows
--Từ ba bảng trong hình hãy in ra các thông tin sau đây:
--Mã đơn hàng
--Tên khách hàng
--Tên công ty vận chuyển
---Và chỉ in ra các đơn hàng đến 'UK' trong năm 1997
Select o.[OrderID], c.CustomerID, s.CompanyName, YEAR(o.ShippedDate), o.ShipCountry
From [dbo].[Orders] as o, [dbo].[Shippers] as s, [dbo].[Customers] as c
Where o.CustomerID = c.CustomerID AND o.ShipVia = s.ShipperID AND YEAR(o.ShippedDate) = 1997 AND o.ShipCountry ='UK'
Mong a ra nhiều clip hơn ạ, Chúc a luôn khỏe mạnh
cảm ơn anh bài giảng rất hay ạ
Chỗ 13:15 em thấy là select với group by các cột phải giống nhau nếu ở trên là O.[EmployeeID) mà dưới group by là E.[EmployeeID) thì nó sẽ báo lỗi mặc dù cả 2 bằng nhau
thầy ơi đoạn 26:00 có vẻ bị thiếu ạ, đề yêu cầu là " số lượng sản phẩm KHÁC NHAU " mà ạ, thầy làm chưa có khác nhau ấy ạ
productID bản thân nó mỗi sản phẩm là đã khác nhau rồi á bạn
Em muốn hỏi tại sao ở 2 vd cuối cùng, khi tính tổng giá trị cuối của đơn hàng, lại không tính chiết khấu vào trong đó ah ?
-- Bài tập 1: Từ 3 bảng Orders, Customers, Shippers in ra các thôgn tin sau:
--Mã đơn hàng
--Tên khách hàng
--Tên công ty vận chuyển
--Và chỉ in ra các đơn hàng được giao đến "UK" trong năm 1997
SELECT [O].[OrderID], C.[ContactName], S.[CompanyName], O.[OrderDate], O.[ShipCountry]
FROM [dbo].[Orders] AS O, [dbo].[Customers] AS C, [dbo].[Shippers] AS S
WHERE C.[CustomerID] = O.[CustomerID]
AND S.[ShipperID] = O.[ShipVia]
AND O.[OrderDate] BETWEEN '1997-01-01' AND '1997-12-31'
AND O.[ShipCountry] = 'UK'
Dạ em cam ơn anh ạ!
Câu hỏi 1: Dạ nếu mình đặt alias cho các bảng bị trùng nhau thì khi đặt hệ thống có cảnh báo là tên ALIAS này đã tồn tại không ạ Thầy. Em cảm ơn Thầy ạ.
-- Bài tập 1
SELECT o.OrderID, c.ContactName, s.CompanyName
FROM Orders AS o, Shippers AS s, Customers AS c
WHERE o.CustomerID = c.CustomerID AND
o.ShipVia = s.ShipperID
AND ShipCountry = 'UK'
AND YEAR(ShippedDate) = 1997
-- Thử thách 1
-- Hãy đưa ra đơn hàng có giá cao nhất từ 2 bảng Order và Order Detail.
-- Lưu ý: Phải tính cả mã giảm giá
-- Thử thách 2
-- Đưa ra thông tin của 3 nhân viên đã giao được nhiều hàng nhất trong tháng 6
-- Từ bảng Employees và bảng Orders
Cảm ơn thầy , bài tập 1 :
SELECT o.OrderID , o.CustomerID , s.CompanyName ,o.ShipCountry , o.ShippedDate
FROM Customers as c , Orders as o, Shippers as s
WHERE c.CustomerID = o.CustomerID AND s.ShipperID = o.ShipVia AND o.ShipCountry='UK' AND YEAR(o.ShippedDate)=1997
GROUP BY o.OrderID , o.CustomerID , s.CompanyName ,o.ShipCountry , o.ShippedDate
a ơi cho e hỏi ví dụ 5 phải thêm distinct nữa chứ ạ ví dụ cả 2 đều cùng 5 thì nó in ra 5 , nếu top 1 không thì thiếu đk ạ
Anh có video dạy về cơ sở dữ liệu, thiết kế hệ thống với chuẩn hóa dữ liệu không ạ? vì các video của anh nói về các cái mối quan hệ (một nhiều, nhiều nhiều,...) nhưng lại không có video giải thích
Không có em
Cám ơn những bài học của anh!
SELECT o.OrderID, c.ContactName, s.CompanyName
FROM dbo.Orders AS o, dbo.Customers AS c, dbo.Shippers AS s
WHERE o.CustomerID = c.CustomerID AND s.ShipperID = o.ShipVia AND YEAR(o.ShippedDate) = 1997 AND o.ShipCountry = 'UK';
cach nay co khac gi voi left join k aj
--Từ 3 bảng customer, orders, shippers in ra thông tin
--mã đơn hàng, tên khách hàng, tên công ty vận chuyển
--Chỉ in ra các đơn hàng đến UK năm 1997
select o.OrderID, c.CompanyName, s.CompanyName
from [dbo].[Customers] as c, [dbo].[Shippers] as s, [dbo].[Orders] as o
where o.CustomerID = c.CustomerID and o.ShipVia= s.ShipperID
and o.ShipCountry = 'UK' and year([ShippedDate]) = 1997
Thử thách: Từ bảng Employee và Order, lọc ra mã nhân viên, họ và tên nhân viên (gom 2 cột last name và first name vào 1 cột đặt tên cột là họ và tên ví dụ: Davolio Nancy), số lượng đơn hàng mà nhân viên bán được lớn hơn 100 và nhân viên có quốc tịch (country) là Mỹ. Sắp xếp theo số lượng tăng dần của đơn hàng bán được
gửi bạn đáp án của mình nha:
select e.EmployeeID,
(e.LastName + ' ' + e.FirstName) as FullName,
count(o.OrderID) as TotalOrders
from [Employees] as e, [Orders] as o
where o.EmployeeID = e.EmployeeID and e.Country like 'usa'
group by e.EmployeeID, e.LastName, e.FirstName
having count(o.OrderID) > 100
order by TotalOrders asc
;
16:53 em bổ sung thêm câu UK vào bài làm ạ
SELECT C.CustomerID, C.CompanyName, C.ContactName, C.Country, COUNT(O.OrderID) AS [SL ĐƠN]
FROM Customers AS C, Orders AS O
WHERE C.Country LIKE 'UK' AND C.CustomerID = O.CustomerID
GROUP BY C.CustomerID, C.CompanyName, C.ContactName, C.Country;
BT1:
SELECT O.OrderID, C.ContactName, S.CompanyName, O.ShipCountry, O.ShippedDate
FROM Customers AS C, Shippers AS S, Orders AS O
WHERE C.CustomerID = O.CustomerID AND S.ShipperID = O.ShipVia
AND O.ShipCountry = 'UK' AND YEAR(O.ShippedDate) = 1997
GROUP BY O.OrderID, C.ContactName, S.CompanyName, O.ShipCountry, O.ShippedDate;
MUỐN XEM SƠ ĐỒ ĐÓ NHƯ NÀO VẬY Ạ
đã học hết 22 bài trc, học kiểu có đề là động não và 90% là đúng, sang cái này kiểu nghi ngờ nhân sinh thật sự, kiểu sao nó nhiều thế, cứ nhìn yêu cầu viết truy vấn ư, không có j khác support à ? khó thật sự, xong vụ nhân 2 bảng với nhau qua tích đề các cũng chẳng nhớ, group by thì đến 3 trg, thề e chẳng thể động não nổi là cần làm cái j, mong cách truy vấn trên nhiều bảng còn lại dễ thở hơn
công nhận :))) sang cái bài này thấy nghi ngờ bản thân luôn, anh ý ko hướng dẫn rõ là khi SELECT thì SELECT c.CustomerID hay o.CustomerID (nếu như cả 2 table đều có CustomerID), GROUP BY thì phải GROUP BY cả 3 column, đoạn này hơi khó hiểu nhỉ :))
nma làm dần là quen ý, hơi rối xíu nma sau khi thực hành tất cả các bài tập trong video này thì t thấy dễ hiểu hơn rùi, cố lênnn
@@minhanhhoang8634 SELECT c.CustomerID hay o.CustomerID đều được cả bạn. bạn thử xem nó đúng cả vì đã kết nối bảng nên dữ liệu như nhau
Giải bài tập 1
select o.OrderID, c.ContactName, s.CompanyName, o.ShipCountry
from Orders o
join Shippers s on o.ShipVia = s.ShipperID
join Customers c on o.CustomerID = c.CustomerID
where ShipCountry = 'UK' and o.ShippedDate between '1997-01-01' and '1997-12-31'
Kết quả 26 rows
sao em nhập c. nó không ra list bên dưới ạ=((((
Mine :
--từ 3 bảng Shippers, orders, Customers
--xuất ra thông tin mã đơn hàng, tên khách hàng, tên công ty vận chuyển
--và chỉ in ra các đơn hàng được giao đến UK trong năm 1997
SELECT o.OrderID, c.ContactName, s.CompanyName, o.ShipCountry, o.RequiredDate
FROM Orders as "o", Shippers as "s", Customers as "c"
WHERE o.ShipVia = s.ShipperID and c.CustomerID = o.CustomerID
and o.ShipCountry = 'UK' and Year(o.RequiredDate) = '1997'
thầy ơi em làm ví dụ 5 như thế này đc ko ạ
WITH t AS
(
SELECT s.SupplierID , s.CompanyName , COUNT(p.ProductID) 'TotalProduct'
FROM Products p
JOIN Suppliers s
ON p.SupplierID = s.SupplierID
GROUP BY s.[SupplierID] , s.CompanyName
)
SELECT * FROM t
WHERE t.TotalProduct = (SELECT MAX(TotalProduct) FROM t)
-- BÀI TẬP 1: Từ 3 bảng Customers, Orders, shippers hãy in ra các thông tin sau đây:
--Mã đơn hàng
--Tên khách hàng
--Tên công ty vận chuyển
--và chỉ in ra các đơn hàng được giao đến 'UK' trong năm 1997.
SELECT o.OrderID, c.ContactName,s.CompanyName
FROM [dbo].[Customers] AS c, [dbo].[Orders] AS o, [dbo].[Shippers] AS s
WHERE c.CustomerID = o.CustomerID AND o.ShipVia = s.ShipperID AND o.ShipCountry='UK' AND YEAR(o.ShippedDate)=1997
GROUP BY o.OrderID, c.ContactName,s.CompanyName
=> kết quả: 26 rows
Câu hỏi 2: Từ 3 bảng products, order detail, và orders hãy lấy ra tên sản phẩm, giá trị trung bình cho từng sản phẩm và chi phí giao hàng. sao cho tên sản phẩm sắp xếp từ a-z và chỉ lấy top 10 sản phẩm có giá trung bình cao nhất.
-- Bài tập: Từ ba bảng Customers, Orders, Shippers hãy in a các thông
-- tin sau:
-- Mã đơn hàng
-- Tên khách hàng
-- Tên công ty vận chuyển
-- Và chỉ in ra các đơn hàng được giao đến 'UK' trong năm 1997
SELECT O.OrderID,C.[ContactName],S.CompanyName
FROM [dbo].[Customers] AS C,[dbo].[Orders] AS O,[dbo].[Shippers] AS S
WHERE O.CustomerID=C.CustomerID AND o.ShipVia=S.ShipperID AND O.ShipCountry='UK' AND YEAR(O.ShippedDate)=1997
anh ơi bao giờ có video tiếp ạ
Sang tuần sau bạn nhé.
ví dụ 3 hình như thầy làm thiếu phần khách hàng đến từ UK thì phải
select c.[CustomerID],[CompanyName],[ContactName],count(o.[OrderID]) as [số đơn hàng đã mua],[ShipCountry]
from [dbo].[Customers] as c,[dbo].[Orders] as o
where c.[CustomerID] =o.[CustomerID] and [ShipCountry] ='UK'
group by c.[CustomerID],[CompanyName],[ContactName],[ShipCountry]
sẵn a xem giúp em làm vậy đúng ko ạ,ví dụ 3
--VD8: Hãy cho biết những thành phố nào có số lượng đơn hàng được giao là khác 1 và 2, ngày đặt hàng từ '1997-04-01' đến '1997-08-31'
Select o.[ShipCountry], COUNT (o.[ShipCountry]) as Qty
From [dbo].[Orders] as o
Where o.[OrderDate] BETWEEN '1997-04-01' AND '1997-08-31'
Group by [ShipCountry]
Having COUNT (o.[ShipCountry]) NOT IN (1,2)
Đáp án của em:
SELECT o.OrderID, c.CustomerID, s.CompanyName,o.ShipCountry,o.ShippedDate
FROM Orders AS o, Customers AS c, Shippers AS s
WHERE (o.CustomerID=c.CustomerID AND o.ShipVia= s.ShipperID) AND (o.ShipCountry='UK' AND YEAR(o.ShippedDate)='1997' )
GROUP BY o.OrderID, c.CustomerID, s.CompanyName,o.ShipCountry,o.ShippedDate
Hãy chọn ra 10 người có giá đơn hàng cao nhất từ hai bảng Orders Details và Orders
Em gửi anh câu trả lời
SELECT O.OrderID, C.CustomerID, S.CompanyName, O.ShipCountry, O.OrderDate
FROM DBO.Orders AS O, DBO.Customers AS C, DBO.Shippers AS S
WHERE O.CustomerID = C.CustomerID AND O.ShipVia = S.ShipperID AND O.ShipCountry = 'UK' AND YEAR (O.OrderDate)='1997'
(30 rows affected)
Hình như ví dụ 4 thầy có thiếu đk cuối, em xin phép bổ sung:
SELECT c.CustomerID,c.CompanyName,c.ContactName,COUNT(o.OrderID)
FROM dbo.Customers AS c, dbo.Orders AS o
WHERE c.Country='UK' AND ( c.CustomerID=o.CustomerID)
GROUP BY c.CustomerID,c.CompanyName,c.ContactName
-Bài tập 1:
SELECT o.OrderID, c.CustomerID, s.CompanyName
FROM dbo.Orders AS o,dbo.Customers AS c, dbo.Shippers AS s
WHERE o.CustomerID = c.CustomerID AND o.ShipVia = s.ShipperID AND o.ShipCountry = 'UK' AND YEAR(o.ShippedDate) = 1997;
Cảm thấy như Phạm Nhật Vượng 🤣🤣
select b.OrderID,a.CustomerID,b.ShipName,b.ShipCountry
from Customers as a,Orders as b,Shippers as c
where a.CustomerID = b.CustomerID and c.ShipperID = b.ShipVia and b.ShipCountry like 'UK' and Year(ShippedDate) = 1997
Em bổ sung bài tập 3 đề có yêu cầu là country = uk nữa :
SELECT C.CustomerID, C.CompanyName,C.ContactName,COUNT(O.[OrderID]) AS [TOTAL ORDERS]
FROM [dbo].[Customers] AS C, [dbo].[Orders] AS O
WHERE C.CustomerID = O.CustomerID AND C.Country='UK'
GROUP BY C.CustomerID,C.CompanyName,C.ContactName
em xin giải bài tập:
SELECT o.OrderID, c.ContactName, s.CompanyName, c.Country, o.ShippedDate
FROM Orders AS o, Shippers AS s, Customers AS c
WHERE (o.CustomerID = c.CustomerID AND o.ShipVia = s.ShipperID) AND (o.ShipCountry ='UK' AND YEAR(o.ShippedDate) = 1997) ;
cam on thay a
em tra bai tap
select o.OrderID, c.ContactName, sh.CompanyName
from Customers as c, Orders as o, Shippers as sh
where o.CustomerID = c.CustomerID and sh.ShipperID = o.ShipVia and o.ShipCountry = 'UK' and year(o.ShippedDate) = 1997
bài 3 hình như a quên dk khách hàng ở QG là UK
SELECT c.CustomerID, c.CompanyName,
c.ContactName,c.Country ,COUNT (o.OrderID) AS " Total Orede"
FROM dbo.Customers AS c, dbo.Orders AS o
WHERE c.CustomerID = o.CustomerID AND c.Country = 'UK'
GROUP BY c.CustomerID, c.CompanyName,c.ContactName,c.Country;
-- Bài tập 1
SELECT o.OrderID, c.ContactName, s.CompanyName
FROM dbo.Customers as c,
dbo.Orders as o,
dbo.Shippers as s
WHERE c.CustomerID = o.CustomerID AND
s.ShipperID = o.ShipVia AND
ShipCountry LIKE 'UK' AND
YEAR(ShippedDate) = 1997
-- Thử thách 1: Hiển thị ra danh sách tên nhà cung cấp và tên các sản phẩm của họ
-- Thử thách 2: Hiển thị ra mã nhân viên, tên nhân viên , tên các sản phẩm họ đã giao và tổng số sản phẩm đó
Câu lệnh giải bài tập :
SELECT
Od.OrderID AS [Mã ĐH],
Cus.ContactName AS [Tên KH],
Ship.CompanyName AS [Tên CTY Vận Chuyển]
FROM Orders AS Od, Customers AS Cus, Shippers AS Ship
WHERE
Od.ShipCountry = 'UK'
AND YEAR(Od.ShippedDate) = '1997'
AND Od.CustomerID = Cus.CustomerID
AND Od.ShipVia = Ship.ShipperID
SELECT o.OrderID,c.CustomerID,c.CompanyName,s.CompanyName
FROM [dbo].[Customers] AS c,[dbo].[Suppliers] AS s,[dbo].[Orders] AS o
WHERE c.CustomerID=o.CustomerID AND s.SupplierID=o.ShipVia AND o.[ShipCountry] = 'UK' AND YEAR(o.ShippedDate) = 1997;
Em cảm ơn
select o.OrderID, c.CustomerID, s.CompanyName, o.ShipCountry, o.ShippedDate
from [dbo].[Orders] as o, [dbo].[Customers] as c, [dbo].[Shippers] as s
where o.CustomerID = c.CustomerID and s.ShipperID = o.ShipVia and YEAR(ShippedDate) = 1997 and o.ShipCountry = 'UK'
-- Giải BT1
SELECT o.OrderID ,c.ContactName,s.CompanyName , year (o.ShippedDate ) as "Năm",o.ShipCountry
FROM [dbo].[Customers] as "c",[dbo].[Orders] as "o",[dbo].[Shippers] as "s"
WHERE o.ShipCountry = 'UK' and year (o.ShippedDate )='1997'
GROUP BY o.OrderID ,c.ContactName,s.CompanyName , year (o.ShippedDate ) ,o.ShipCountry;
-- Thử thách
-- 1. In ra [OrderID],[ContactName],[RequiredDate],[ShipCity]
-- Với điều kiện chỉ đến London và RequiredDate = [20 , 24].
-- Từ bảng Orders và bảng Customers,
-- 2. In ra [ProductName],[CompanyName], Lượng hàng tồn
-- Yêu cầu : in ra 3 công ty có lượng hàng tồn cao nhất.
-- Từ bảng Products và bảng Customers.
em gửi bài tập ạ
SELECT O.OrderID, C.ContactName, S.CompanyName
FROM [dbo].[Orders] AS O, [dbo].[Customers] AS C,
[dbo].[Shippers] AS S
WHERE C.CustomerID = O.CustomerID AND S.ShipperID = O.ShipVia and o.ShipCountry = 'uk' and year(o.[ShippedDate])='1997'
-- BAI TAP VE NHA: Tu 3 bang "Customers", "Orders", "Shippers", hay in ra:
-- Ma don hang;
-- Ten khach hang;
-- Ten cty van chuyen;
-- Va chi lay ra cac don hang duoc giao den "UK" trong nam 1997;
SELECT o.OrderID, c.ContactName, s.CompanyName
, YEAR(o.ShippedDate) AS [year]
FROM dbo.Orders AS o, dbo.Customers AS c, dbo.Shippers AS s
WHERE o.CustomerID = c.CustomerID
AND o.ShipVia = s.ShipperID
AND o.ShipCountry='UK'
AND YEAR(o.ShippedDate)='1997'
GROUP BY o.OrderID, c.ContactName, s.CompanyName, YEAR(o.ShippedDate);
BT 1
SELECT O.OrderID, C.CompanyName, S.CompanyName
FROM [dbo].[Orders] AS O, [dbo].[Customers] AS C, [dbo].[Shippers] AS S
WHERE O.CustomerID = C.CustomerID AND S.ShipperID = O.ShipVia AND O.ShipCountry = 'UK' AND YEAR (O.ShippedDate) = 1997
MINH RA 26 DONG
Thử thách: Tu bang Suppliers, Product, Order detail lấy ra mã nhà cung cấp, địa chỉ nhà cung cấp, sl đặt hàng và chiết khấu, tính trung bình giá bán của các sản phẩm cho mỗi nhà cung cấp, chỉ lấy 5 KQ đầu
Cái ví dụ 2. Bạn nào muốn gọp họ và tên vào chung 1 cột thì có thể thử cách này nha
select e.EmployeeID, e.FirstName +' '+ e.LastName as [Họ và tên],count(o.OrderID) as [Số đơn hàng bán được]
from Employees as e, Orders as o
where e.EmployeeID = o.EmployeeID
group by o.EmployeeID, e.EmployeeID, e.FirstName +' '+ e.LastName
--Từ 3 bảng Orders, Customers, Shippers hãy in ra các thông tin sau
--Mã đơn hàng
--Tên khách hàng
--Tên công ty vận chuyển
--Và chỉ in ra các đơn hàng được giao đến UK vào năm 1997
SELECT O.OrderID, C.ContactName, S.CompanyName, C.Country, O.ShippedDate
FROM [dbo].[Orders] AS O, [dbo].[Customers] AS C, [dbo].[Shippers] AS S
WHERE S.ShipperID = O.ShipVia AND C.CustomerID = O.CustomerID AND C.Country = 'UK' AND YEAR(O.ShippedDate) = 1997;
--lấy ra các thông tin: mã đơn hàng, tên khách hàng, Tên công ty vận chuyển,
--và chỉ in ra các đơn hàng được giao đến 'UK' trong năm 1997
SELECT o.[OrderID],
c.[ContactName] AS [Tên Khách Hàng],
o.[ShipName] AS [Tên Công Ty Vận Chuyển]
FROM [dbo].[Orders] AS o
JOIN [dbo].[Customers] AS c ON o.[CustomerID] = c.[CustomerID]
WHERE o.[ShipCountry] = 'UK' AND YEAR(o.[ShippedDate]) = 1997;
SELECT o.[OrderID],c.[CompanyName], s.[CompanyName],year(o.(ShippedDate)),o.[Shipcountry]
from [dbo].[Orders] as o, [dbo].[Customers] as c, [dbo].[Shippers] as s
where o.[CustomerID] = c.[CustomerID] and o.[ShipVia]=s.[ShipID] and o.[Shipcountry]='UK' and year(o.(ShippedDate))='1997'
SELECT 0.[OrderID],o.[CustomerID],s.[CompanyName],o.[ShipCountry],o.[ShippedDate]
FROM [dbo].[Customers] AS "c", [dbo].[Orders] AS "o", [dbo].[Shippers] AS "s"
WHERE o.[ShipCountry]='UK'AND YEAR(o.[ShippedDate])=1997 AND c.[CustomerID]=o.[CustomerID] AND o.[ShipVia]=s.[ShipperID];
BT
SELECT o.OrderID, c.ContactName, s.CompanyName
FROM dbo.Customers AS c, dbo.Orders AS o, dbo.Shippers AS s
WHERE c.CustomerID = o.CustomerID AND o.ShipVia = s.ShipperID AND o.ShipCountry = 'UK' AND YEAR(o.OrderDate) = 1997;
==> 30 dòng
Cám ơn anh :)
select o.OrderID,c.ContactName,s.CompanyName,o.ShipCountry,o.ShippedDate
from Orders as o,Customers as c,Shippers as s
where o.ShipCountry = 'UK'and YEAR(ShippedDate) = 1997 and o.CustomerID = c.CustomerID and o.ShipVia = s.ShipperID
BT1:
SELECT o.OrderID, c.ContactName, s.CompanyName, o.ShipCountry, YEAR(o.OrderDate) AS "Year"
FROM [dbo].[Orders] AS o, [dbo].[Customers] AS c, [dbo].[Shippers] AS s
WHERE o.CustomerID=c.CustomerID AND o.ShipVia=s.ShipperID AND o.ShipCountry LIKE 'UK' AND YEAR(o.OrderDate)=1997
GROUP BY o.OrderID, c.ContactName, s.CompanyName, o.ShipCountry, YEAR(o.OrderDate);
BT:
SELECT O.OrderID, C.ContactName, S.CompanyName, O.ShipCountry,
YEAR(O.ShippedDate) AS Year
FROM Orders AS O, Customers AS C, Shippers AS S
WHERE O.ShipCountry = 'UK' AND
C.CustomerID = O.CustomerID AND O.ShipVia = S.ShipperID AND
YEAR(O.ShippedDate) = 1997;
select o.OrderID, c.ContactName, c.CompanyName, o.OrderID, o.OrderDate
from [dbo].[Customers] as c, [dbo].[Orders] as o, [dbo].[Shippers] as s
where o.CustomerID = c.CustomerID and o.ShipVia = s.ShipperID and o.ShipCountry ='UK' and year(o.OrderDate) = 1997
select o.OrderID, c.ContactName, s.CompanyName, o.ShipCountry, o.ShippedDate
from Customers as c, Orders as o, Shippers as s
where c.CustomerID=o.CustomerID and o.ShipVia=s.ShipperID and o.ShipCountry like 'UK' and o.ShippedDate like '%1997%';
VD bổ sung
SELECT C.CustomerID, C.CompanyName, C.ContactName,[ShipCountry], COUNT(O.[OrderID]) AS [TotalOders]
FROM [dbo].[Customers] AS C , [dbo].[Orders] AS O
WHERE C.CustomerID = O.CustomerID AND [ShipCountry] = 'UK'
GROUP BY C.CustomerID, C.CompanyName, C.ContactName,[ShipCountry];
SELECT o.OrderID, c.CompanyName as 'NameCustomers', s.CompanyName as 'NameShippers', o.ShipCountry, o.ShippedDate
FROM Customers AS c, Orders as o, Shippers as s
WHERE c.CustomerID = o.CustomerID AND s.ShipperID = o.ShipVia AND o.ShipCountry LIKE 'uk' AND YEAR(O.ShippedDate) = '1997';
use NORTHWND
select o.OrderID, c.ContactName, s.CompanyName, YEAR(o.ShippedDate) as "Year Shipped", o.ShipCountry
from [dbo].[Orders] as o, [dbo].[Customers] as c, [dbo].[Shippers] as s
where c.CustomerID = o.CustomerID AND o.ShipVia = s.ShipperID AND o.ShipCountry = 'UK' AND YEAR(o.ShippedDate)=1997
SELECT o.[OrderID],c.[ContactName],c.[CompannyName], o.[ShipCountry], YEAR([ShippedDate]) FROM [Orders] AS o, [Customers] AS c WHERE o.[ShipCountry[='UK' AND YEAR([ShippedDate])=1997
Select O.OrderID,C.ContactName,S.CompanyName
From [dbo].[Orders] as O,[dbo].[Customers] as C, Shippers as S
Where O.ShipCountry ='UK' and Year(O.ShippedDate) =1997 and C.CustomerID = O.CustomerID and S.ShipperID = S.ShipperID
Group By O.OrderID,C.ContactName,S.CompanyName
select o.CustomerID , c.ContactName , s.CompanyName, o.ShipCountry, o.ShippedDate
from [dbo].[Customers] as c , [dbo].[Orders] as o ,[dbo].[Shippers] as s
where o.CustomerID = c.CustomerID and o.ShipVia = s.ShipperID and o.ShipCountry = 'UK' and year(o.ShippedDate) = 1997
group by o.CustomerID , c.ContactName , s.CompanyName, o.ShipCountry, o.ShippedDate
select o.OrderID, c.ContactName, s.CompanyName, o.ShipCountry,
year(o.[ShippedDate]) as [year]
from [dbo].[Orders] as o, [dbo].[Customers] as c, [dbo].[Shippers] as s
where o.CustomerID = c.CustomerID and o.ShipVia = s.ShipperID
group by o.OrderID, c.ContactName, s.CompanyName, o.ShipCountry, o.ShippedDate
having o.ShipCountry like 'UK' and year(o.[ShippedDate])=1997
order by o.ShipCountry asc;
SELECT o.OrderID, c.ContactName, s.CompanyName, o.ShippedDate
FROM [dbo].[Orders] AS o, [dbo].[Customers] AS c, [dbo].[Shippers] AS s
WHERE o.CustomerID = c.CustomerID AND
o.ShipVia = s.ShipperID AND
o.ShipCountry = 'UK' AND
--o.ShippedDate BETWEEN '1997-1-1' AND '1997-12-31'
YEAR(o.ShippedDate) = 1997 -- nhanh hơn so vs dòng trên
GROUP BY o.OrderID, c.ContactName, s.CompanyName, o.ShippedDate
ORDER BY o.ShippedDate. 26 dòng
select o.OrderID, c.ContactName,s.CompanyName,o.ShipCountry,O.ShippedDate, count(o.OrderID)
from Customers as c , Orders as o , Shippers as s
where c.CustomerID=o.CustomerID and s.ShipperID=o.ShipVia
group by o.OrderID, c.ContactName,s.CompanyName ,o.ShippedDate,o.ShipCountry
having YEAR(o.ShippedDate) = '1997' and o.ShipCountry in ('UK');
SELECT o.OrderID, c.ContactName, s.CompanyName
FROM Customers AS c, Orders AS o, Shippers AS s
WHERE o.ShipVia=s.ShipperID AND c.CustomerID=o.CustomerID AND o.ShipCountry='UK' AND YEAR(o.ShippedDate)=1997
Dap an
SELECT o.OrderID, c.ContactName, s.CompanyName
FROM dbo.Customers AS c, dbo.Shippers AS s, dbo.Orders AS o
WHERE YEAR(o.ShippedDate)=1997 AND ShipCountry='UK' AND o.CustomerID=c.CustomerID AND s.ShipperID=o.ShipVia
GROUP BY o.OrderID , c.ContactName, s.CompanyName
SELECT o.OrderID AS "Ma Don Hang" , c.ContactName AS "Ten Khach Hang", s.CompanyName AS "Ten Don Vi Van Chuyen"
FROM Orders AS o, Customers AS c, Shippers AS s
WHERE (c.CustomerID = o.CustomerID
AND
o.ShipVia = s.ShipperID )AND( o.ShipCountry LIKE "UK" AND Year(o.ShippedDate) = "1997" )
GROUP BY o.OrderID , c.ContactName , s.CompanyName
SELECT o.OrderID, c.ContactName, s.CompanyName
FROM Orders as o, Customers as c, Shippers as s
WHERE o.ShipCountry = 'UK' AND YEAR(o.OrderDate) = '1997' AND o.CustomerId = c.CustomerID AND s.ShipperID = o.ShipVia
ORDER BY c.ContactName DESC;
SELECT o.OrderID,c.ContactName,s.CompanyName,[ShippedDate]
FROM dbo.Orders AS o, dbo.Customers AS c, dbo.Shippers AS s
WHERE o.CustomerID=c.CustomerID AND s.ShipperID=o.ShipVia
AND o.ShipCountry ='UK' AND YEAR([ShippedDate])= 1997
GROUP BY o.OrderID,c.ContactName,s.CompanyName,[ShippedDate]
Em cảm ơn ạ
bt1
SELECT o.OrderID, c.ContactName, s.ShipperID, s.CompanyName, o.ShipCountry, o.OrderDate
FROM [dbo].[Customers] as c, [dbo].[Orders] as o, [dbo].[Shippers] as s
WHERE o.CustomerID = c.CustomerID AND
s.ShipperID = o.ShipVia AND
o.ShipCountry LIKE 'UK' AND
YEAR(o.OrderDate) = 1997
GROUP BY o.OrderID, c.ContactName, s.ShipperID, s.CompanyName, o.ShipCountry, o.OrderDate;
bt1
WITH t AS
(
SELECT o.OrderID , c.ContactName , s.CompanyName , Year(o.ShippedDate) 'Year' ,o.ShipCountry 'ShipCountry'
FROM Orders o
JOIN Customers c
ON o.CustomerID = c.CustomerID
JOIN Shippers s
ON o.ShipVia = s.ShipperID
GROUP BY o.OrderID , c.ContactName , s.CompanyName , Year(o.ShippedDate) ,o.ShipCountry
)
SELECT * FROM t
WHERE t.ShipCountry = 'UK'
and t.Year='1997'