使用不同表对 sql 查询中的行进行分组
Grouping rows in sql query with different tables
我如何编写一个显示如下结果的查询
1 Beverages NULL NULL
1 Beverages Chai Exotic Liquids
1 Beverages Cheng Exotic Liquids
1 Dairy Products NULL NULL
1 Beverages Gorgonzola Telino Tokyo Traders
1 Beverages Geitost Tokyo Traders
1 Beverages Gudbrandsdalsost Tokyo Traders
我用的是Northwind,我会写正常的查询
SELECT c.CategoryId, c.CategoryName, p.ProductName,s.CompanyName
FROM Categories c
INNER JOIN Products p ON c.CategoryId = p.CategoryId
INNER JOIN Suppliers s ON s.SupplierId = p.CategoryId
您可以通过该查询获得所需的结果:
SELECT c.CategoryId, c.CategoryName, p.ProductName,s.CompanyName
FROM Categories c
LEFT JOIN Products p ON c.CategoryId = p.CategoryId
LEFT JOIN Suppliers s ON s.SupplierId = p.SupplierID
UNION ALL
SELECT c.CategoryId, c.CategoryName, NULL, NULL
FROM Categories c
ORDER BY CategoryId, ProductName
我如何编写一个显示如下结果的查询
1 Beverages NULL NULL
1 Beverages Chai Exotic Liquids
1 Beverages Cheng Exotic Liquids
1 Dairy Products NULL NULL
1 Beverages Gorgonzola Telino Tokyo Traders
1 Beverages Geitost Tokyo Traders
1 Beverages Gudbrandsdalsost Tokyo Traders
我用的是Northwind,我会写正常的查询
SELECT c.CategoryId, c.CategoryName, p.ProductName,s.CompanyName
FROM Categories c
INNER JOIN Products p ON c.CategoryId = p.CategoryId
INNER JOIN Suppliers s ON s.SupplierId = p.CategoryId
您可以通过该查询获得所需的结果:
SELECT c.CategoryId, c.CategoryName, p.ProductName,s.CompanyName
FROM Categories c
LEFT JOIN Products p ON c.CategoryId = p.CategoryId
LEFT JOIN Suppliers s ON s.SupplierId = p.SupplierID
UNION ALL
SELECT c.CategoryId, c.CategoryName, NULL, NULL
FROM Categories c
ORDER BY CategoryId, ProductName