-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathlesson12.sql
More file actions
132 lines (103 loc) · 2.58 KB
/
Copy pathlesson12.sql
File metadata and controls
132 lines (103 loc) · 2.58 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
/*
Lesson 12: Sorting and Limiting Query Results
Written on: December 27, 2024
Trackit Database
*/
SHOW TABLES;
-- Listing 12.1: Using ORDER BY
SELECT *
FROM Worker
ORDER BY LastName;
-- Listing 12.2: Using ASC
SELECT *
FROM Worker
ORDER BY LastName ASC;
-- Listing 12.3: Sorting in Descending Order
SELECT *
FROM Worker
ORDER BY LastName DESC;
-- Listing 12.4: Sorting Joined Table
SELECT
w.FirstName,
w.LastName,
p.Name ProjectName
FROM Worker w
INNER JOIN ProjectWorker pw ON w.WorkerId = pw.WorkerId
INNER JOIN Project p ON pw.ProjectId = p.ProjectId
ORDER BY w.LastName ASC;
-- Listing 12.5: Sorting by LastName, Then the project Name
SELECT
w.FirstName,
w.LastName,
p.Name ProjectName
FROM Worker w
INNER JOIN ProjectWorker pw ON w.WorkerId = pw.WorkerId
INNER JOIN Project p ON pw.ProjectId = p.ProjectId
ORDER BY w.LastName ASC, p.Name ASC;
-- Listing 12.6: Changing Sort Order for Individual Sort Items
SELECT
w.FirstName,
w.LastName,
p.Name ProjectName
FROM Worker w
INNER JOIN ProjectWorker pw ON w.WorkerId = pw.WorkerId
INNER JOIN Project p ON pw.ProjectId = p.ProjectId
ORDER BY w.LastName DESC, p.Name ASC;
-- Listing 12.7: Projects Before Workers
SELECT
p.Name ProjectName,
w.FirstName,
w.LastName
FROM Worker w
INNER JOIN ProjectWorker pw ON w.WorkerId = pw.WorkerId
INNER JOIN Project p ON pw.ProjectId = p.ProjectId
ORDER BY p.Name ASC, w.LastName ASC;
-- Listing 12.8: Printing Tasks with Their Status
SELECT
t.Title,
s.Name StatusName
FROM Task t
LEFT OUTER JOIN TaskStatus s ON t.TaskStatusId = s.TaskStatusId
ORDER BY s.Name ASC;
-- LIsting 12.9: Sorting NULL Values to the End
SELECT
t.Title,
s.Name StatusName
FROM Task t
LEFT OUTER JOIN TaskStatus s ON t.TaskStatusId = s.TaskStatusId
ORDER BY ISNULL(s.Name), s.Name ASC;
-- Listing 12.10: Selecting a Limited Number of Workers
-- LIMIT [Row offset], [Number of rows]
SELECT *
FROM Worker
ORDER BY LastName DESC
LIMIT 0, 10;
-- Listing 12.11: Selecting Without the Row offset
SELECT *
FROM Worker
ORDER BY LastName DESC
LIMIT 10;
-- Listing 12.12: Using an Offset
SELECT *
FROM Worker
ORDER BY LastName DESC
LIMIT 10, 10;
-- Listing 12.13: Using an offset beyond the data
SELECT *
FROM Worker
ORDER BY LastName DESC
LIMIT 200, 10;
-- Listing 12.14: List All Projects That Have a Task
SELECT
p.Name ProjectName,
p.ProjectId
FROM Project p
INNER JOIN Task t ON p.ProjectId = t.ProjectId
ORDER BY p.Name;
-- Listing 12.15: List All Projects Once That Have a Task
SELECT DISTINCT
p.Name ProjectName,
p.ProjectId
FROM Project p
INNER JOIN Task t ON p.ProjectId = t.ProjectId
ORDER BY p.Name;