------------------------------
-- JOIN (INNER) - EQUI
------------------------------
SELECT productName , unitPrice , categoryName
FROM products JOIN categories
ON categoryID = categoryID
SELECT products.productName , products.unitPrice , categories.categoryID , categories.categoryName
FROM products JOIN categories
ON products.categoryID = categories.categoryID
SELECT products.productName , products.unitPrice , products.UnitsInStock , categories.categoryName
FROM products JOIN categories
ON products.categoryID = categories.categoryID
SELECT pro.productName , pro.unitPrice , pro.UnitsInStock , cat.categoryName
FROM products pro JOIN categories cat
ON pro.categoryID = cat.categoryID
WHERE pro.unitPrice > 50
ORDER BY pro.productName DESC
SELECT pro.productName , sup.CompanyName , cat.CategoryName
FROM products pro JOIN suppliers sup
ON pro.supplierID = sup.supplierID
JOIN categories cat
ON pro.categoryID = cat.CategoryID
WHERE pro.productName LIKE '%a%'
--------------------------------
-- JOIN (INNER) - NON EQUI
--------------------------------
CREATE TABLE price_range
(min_price int,
max_price int,
price_range varchar(25))
INSERT INTO price_range VALUES
(0,20,'A') , (21,40,'B') , (41,60,'C') , (61,80,'D'),
(81,100,'E')
SELECT *
FROM price_range
SELECT pro.productName , pro.UnitPrice , rang.min_price , rang.max_price , rang.price_range
FROM products pro JOIN price_range rang
ON pro.UnitPrice BETWEEN rang.min_price AND rang.max_price
-------------------------------
-- OUTER JOIN
-------------------------------
USE ACDB
SELECT cust.customer_id , cust.first_name , cust.last_name , cust.pack_id , pack.speed , pack.monthly_payment
FROM customers cust JOIN packages pack
ON cust.pack_id = pack.pack_id
SELECT cust.customer_id , cust.first_name , cust.last_name , cust.pack_id , pack.speed , pack.monthly_payment
FROM customers cust LEFT OUTER JOIN packages pack
ON cust.pack_id = pack.pack_id
SELECT cust.customer_id , cust.first_name , cust.last_name , cust.pack_id , pack.speed , pack.monthly_payment
FROM customers cust RIGHT OUTER JOIN packages pack
ON cust.pack_id = pack.pack_id
SELECT cust.customer_id , cust.first_name , cust.last_name , cust.pack_id , pack.speed , pack.monthly_payment
FROM customers cust FULL OUTER JOIN packages pack
ON cust.pack_id = pack.pack_id
-----------------------------------------
-- SELF JOIN
-----------------------------------------
SELECT * FROM employees
SELECT employeeID , lastName , reportsTO
FROM employees
SELECT emp.lastName AS 'EmployeeName' , mng.lastName AS 'ManagerName'
FROM employees emp JOIN employees mng
ON emp.reportsTo = mng.employeeID
SELECT emp.lastName AS 'EmployeeName' , mng.lastName AS 'ManagerName'
FROM employees emp LEFT OUTER JOIN employees mng
ON emp.reportsTo = mng.employeeID