Where

אנחנו רוצים לסנן את התוצאות שמגיעות ולקבל רק את מה שרלוונטי.

Select 
    ProductName 
From Products 
Where UnitsInStock <= 10

השוואה בין שדות

SELECT * 
FROM Orders 
WHERE ShippedDate < RequiredDDate

Between

Select 
    ProductName 
From Products 
Where UnitsInStock Between 10 and 20  
Select 
    ProductName 
From Products 
Where UnitsInStock Not Between 10 and 20  

in

Select * From Employees
Where City in ('London', 'Tacom', 'Seattle') 

like

עובד רק על סטרינגים.

בדוגמא כל השמות מתחילים ב-A.

Select * 
From Employees 
Where FirstName LIKE 'A%'

כל העובדים שהמיקוד שלהם לא מכיל 9

Select * 
From Employees 
where postalcode NOT LIKE '%9%'

כל שמות המוצרים שיש להם a אות אחת לפני הסוף.

הסוגרים המרובעים אומרים שאחת מהאפשרויות של מה שיש שם תהיה.

select
    ProductName, CategoryID
from Products
where ProductName like '%a[abcdefghijklmnopqrstuvwxyz]'

NULL

רשומות ללא ערך

SELECT 
    CustomerID, CompanyName, Region 
FROM Customers WHERE Region IS NULL
SELECT 
    CustomerID, CompanyName, Region 
FROM Customers WHERE Region IS NOT NULL

תאריכים

select
    OrderID, OrderDate, RequiredDate
from Orders
where RequiredDate > '1996-10-31'

שימוש באופרטורים

select 
    ProductName 
from products where UnitsInStock<20 and UnitPrice>30

מיון

ברירת המחדל היא בסדר עולה. מנמוך לגבוה.

select 
    CategoryName 
from Categories order by CategoryName

סדר יורד.

select 
    CategoryName 
from Categories 
order by CategoryName desc
select 
    ProductName, UnitPrice
from Products 
where UnitPrice between 21.35 and 43.9
order by UnitPrice desc

סידור לפי שדה n בשדות שבחרתי ב-select.

Select 
    ProductName, UnitPrice 
From Products Order By 2

סינון אחרי סינון. יסנן על פי שדה 2 ואחז לפי שדה 1.

Select 
    ProductName, UnitPrice 
From Products Order By 2,1

בחירת n תוצאות

select top 10 * from products

תרגול where – שאלות

את שמו הפרטי ושם המשפחה של עובד מספר 3 Employees 1. הצג מטבלת

את שם המוצר ומחירו של מוצר מספר 4 Products 2. הצג מטבלת את מספר המוצר, שם המוצר ומחירו עבור המוצרים אשר מחירם גבוה מ Products 3. הצג מטבלת 20 . סדר את התוצאות ע"פ מחיר )סדר עולה( את השם המלא בעמודה אחת, תאריך הלידה, ומספר העובד אליו Employees 4. יש להציג מטבלת . עבור עובד שמספרו 8 )ReportsTo( הוא מדווח את קוד העובד, שמו המלא, ותאריך לידה עבור העובדים אשר גרים בעיר Employees 5. הצג מטבלת יש לתת כינויים מתאים לעמודות. .LONDON . את כל הפרטים עבור מוצרים אשר מחירם אינו בין 50 ל- 100 Products 6. הצג מטבלת את שם המוצר ומחירו , עבור המוצרים אשר מחירם נע בין 21.35 לבין Products 7. הצג מטבלת 43.9 , מיין את התוצאות עפ"י המחיר )סדר יורד( את קוד העובד,שם המשפחה ותאריך תחילת עבודה עבור העובדים אשר Employees 8. הצג מטבלת .TACOMA או LONDON גרים בערים את מספר העובד , שמו הפרטי ושם משפחתו עבור העובדים אשר מספר Employees 9. הצג מטבלת 5 , 2 , העובד שלהם שווה ל 1 את שמו הפרטי של העובד, שם משפחתו , ותאריך לידתו עבור העובדים Employees 10 . הצג מטבלת 7 , 5 , אשר מספר העובד שלהם לא שווה לערכים 4 את מספר המוצר, שם המוצר ומספר הקטגוריה עבור המוצרים אשר מספר Products 11 . הצג מטבלת 2 או 7. מיין את התוצאות עפ"י מספר קטגוריה )סדר עולה( , הקטגוריה שלהם שונה מ- 1 את שמם הפרטי של העובדים והאיזור שלהם, Employees 12 .הצג מטבלת NULL הוא ) Region( עבור העובדים אשר ערך האיזור שלהם את שמות המוצרים ומחירם עבור שלושת המוצרים היקרים ביותר. products 13 . יש להציג מטבלת את מספרי ההזמנות, תאריך ההזמנה ותאריך הדרישה עבור כל ההזמנות Orders 14 . יש להציג מטבלת . שתאריך הדרישה שלהם אחרי חודש אוקטובר 1996 את מספר העובדים, שם המשפחה שלהם ולמי הם מדווחים, רק employees 15 . יש להציג מטבלת עבור אותם עובדים שיש להם מנהל )כלומר יש להם למי לדווח(. יש למיין את התוצאות ע"פ מספר עובד בסדר עולה

הזכויות שמורות לג'ון ברייס מכללת הי-טק מקבוצת מטריקס © 'o' את כל הפרטים של קטגוריות שיש להן את האות categories 16 . יש להציג מטבלת בשם. את שם החברה ומדינתה , עבור החברות שהאות האחרונה בשמם היא Customers 17 . הצג מטבלת .'a' 'a' את שם המוצר ומספר הקטגוריה שלו , עבור המוצרים שבשמם האות Products 18 . הצג מטבלת היא אות אחת לפני הסוף. את מספר ההזמנה, מספר הלקוח ומספר העובד עבור ההזמנות Orders 19 . יש להציג מטבלת . שהתבצעו מחודש אפריל עד חודש מאי בשנת 1997 יש לבצע מיון לפי תאריך הזמנה בסדר עולה ומיון משני לפי מספר לקוח בסדר יורד. את מספר הלקוח, שם החברה, ארץ, טלפון ואזור עבור הלקוחות Customers 20 . יש להציג מטבלת .NULL והאזור שלהם הוא ,G או M,F שנמצאים במדינות ששמן מתחיל ב את מספר העובד, השם המלא, תאריך הלידה והמדינה עבור employees 21 . יש להציג מטבלת . או שנולדו בשנת 1963 D או K העובדים שבשם המשפחה שלהם מופיעה האות את שם המוצר, מחיר ליחידה ומס' הספק עבור המוצרים אשר Products 22 . הצג מטבלת . מחירם גבוה מ – 30 . וגם מס' הספק שלהם הוא 1 או 3 שאלות אתגר את מספר ההזמנה, מספר העובד, תאריך ההזמנה, Orders 23 . יש להציג מטבלת תאריך הדרישה ושם המשלוח עבור ההזמנות שעומדות בתנאים הבאים: מספר העובד שלהם הוא 7 וגם שם המשלוח שלהם הוא אחד מהבאים : QUICK-Stop Du mond entire Eastern Connection וגם ההפרש בין תאריך הדרישה לתאריך ההזמנה גדול מ 20- יום. את מספר המוצר ושם המוצר עבור המוצרים ש: products 24 . יש להציג מטבלת . שמספר הספק שלהם הוא 8,16 או 21 . או מחיר היחידה קטן מ 10 בכל מקרה יש לכלול בתוצאות רק מוצרים שכמותם במלאי אינה בין 10 ל 100 יש למיין בסדר עולה לפי מחיר היחידה.

תרגול where – תשובות

-- ex1
select 
    FirstName, LastName 
from employees
Where EmployeeID = 3

-- ex2
select 
    ProductName, UnitPrice
from Products
where  ProductID = 4

-- ex3
select 
    ProductID, ProductName, UnitPrice
from Products
where UnitPrice > 20

-- ex4
select 
    FirstName+' '+LastName,
    BirthDate,
    ReportsTo
from Employees
where EmployeeID = 8

-- ex5
select
    EmployeeID,
    FirstName+' '+LastName as [Name],
    BirthDate
from Employees
where City = 'London'

-- ex6
select *
from Products
where UnitPrice not Between 50 and 100

-- ex7
select 
    ProductName, UnitPrice
from Products 
where UnitPrice between 21.35 and 43.9
order by UnitPrice desc

-- ex8
select
    EmployeeID, LastName, HireDate
from Employees
where City = 'LONDON' or City = 'TACOMA'

-- ex9
select
    EmployeeID, FirstName, LastName
from Employees
where EmployeeID = 1 or EmployeeID = 2 or EmployeeID = 5

-- ex10
select
    FirstName, LastName, BirthDate
from Employees 
where EmployeeID <> 4 and EmployeeID <> 5 and EmployeeID <> 7

-- ex11
select
    ProductID, ProductName, CategoryID
from Products
where CategoryID <> 1 and CategoryID <> 2 and CategoryID <> 7
order by CategoryID asc

-- ex12
select
    FirstName, Region
from Employees
where Region is null

-- ex13
select top 3
    ProductName, UnitPrice
from products
order by UnitPrice desc

-- ex14
select
    OrderID, OrderDate, RequiredDate
from Orders
where RequiredDate > '1996-10-31'

-- ex15
select
    EmployeeID, LastName, ReportsTo
from employees
where ReportsTo is not null
order by EmployeeID

-- ex16
select *
from categories
where CategoryName like '%s%'

-- ex17
select
    CompanyName, Country
from Customers
where CompanyName like '%a'

-- ex18
select
    ProductName, CategoryID
from Products
where ProductName like '%a[abcdefghijklmnopqrstuvwxyz]'

-- ex19
select
    OrderID, CustomerID, EmployeeID
from Orders
where OrderDate Between '1997-04-01' and '1997-05-31'
order by OrderDate asc, CustomerID

-- ex20
select
    CustomerID, CompanyName, Country, Phone, Region
from Customers
where Country like 'f%' or Country like 'm%' or 
  Country like 'g%' and Region is null

-- ex21
select
    EmployeeID, FirstName+' '+LastName as [Full Name], BirthDate, Country
from employees
where LastName like '%k%' or LastName like '%d' or BirthDate 
  Between '1963-01-01' and '1963-12-31'

-- ex22
select
    productName, UnitPrice, SupplierID
from Products
where UnitPrice > 30 and (SupplierID = 1 or SupplierID = 3)

-- ex23
select
    OrderID, EmployeeID, OrderDate, RequiredDate, ShipName
from Orders
where EmployeeID = 7 and (ShipName = 'QUICK-Stop' or 
  ShipName = 'Du mond entire' or ShipName = 'Eastern Connection')
    and (RequiredDate - OrderDate) > 20