-
Notifications
You must be signed in to change notification settings - Fork 1
Expand file tree
/
Copy pathAllianceSearchQueries.sql
More file actions
202 lines (166 loc) · 4.28 KB
/
AllianceSearchQueries.sql
File metadata and controls
202 lines (166 loc) · 4.28 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
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
/*
Bring up category names
*/
SELECT *
FROM Category_Names;
/*
Given ID
Find category name
*/
SELECT Name
FROM Categories
WHERE ID = 1;
/*
Search based on category
*/
SELECT rev.rating, res.name, res.description, res.Address_State AS State,
res.Address_City AS City, res.Address_Zip AS Zip, res.Address_Street AS Street,
res.Address_Number AS Num
FROM (
SELECT *
FROM Resource
NATURAL JOIN (
SELECT ID
FROM Categories
WHERE Name = 'Housing' #put in category name
) categories
) res
NATURAL LEFT JOIN (
SELECT ID, AVG(Rating) AS rating
FROM Reviews
GROUP BY ID
) rev
ORDER BY rev.rating DESC;
/*
search by name
*/
SELECT rev.rating, res.name, res.description, res.Address_State AS State,
res.Address_City AS City, res.Address_Zip AS Zip, res.Address_Street AS Street,
res.Address_Number AS Num
FROM (
SELECT *
FROM Resource
WHERE name = 'Beloved' #insert name here
) res
NATURAL LEFT JOIN (
SELECT ID, AVG(Rating) AS rating
FROM Reviews
GROUP BY ID
) rev
ORDER BY rev.rating DESC;
/*
find filtering options based on category
ex: housing
*/
SELECT COLUMN_NAME AS filter_ops
FROM INFORMATION_SCHEMA.COLUMNS
WHERE TABLE_NAME = 'Housing' #insert category name
AND COLUMN_NAME != 'ID';
/*
Acess phone number
*/
SELECT Phone_Number
FROM Phone_Numbers
WHERE ID = 3; #input resource ID
/*
given resource ID, show every attribute all info
*/
#2 categories
SELECT *
FROM (
SELECT *
FROM Housing #Insert category name 1 here
NATURAL LEFT JOIN
Phone_Numbers
NATURAL JOIN
Resource
) category1
JOIN (
SELECT *
FROM Medical #Insert category name 2 here
NATURAL LEFT JOIN
Phone_Numbers
NATURAL JOIN
Resource
) category2
ON category1.ID = category2.ID
WHERE category1.ID = 1; #INSERT ID HERE
#2 sub categories
SELECT *
FROM Housing_Type #Insert subcategory 1 here
WHERE ID = 1; #INSERT ID HERE
SELECT *
FROM Housing_Serve #Insert subcategory 2 here
WHERE ID = 1; #INSERT ID HERE
#1 sub category
SELECT *
FROM Med_Type #Insert subcategory 1 here
WHERE ID = 1; #INSERT ID HERE
/*
Search based on filtering selections
*/
SELECT rev.avg_rating AS Rating, res.name AS Name, res.description AS Description, res.Address_State AS State,
res.Address_City AS city, res.Address_Zip AS Zip, res.Address_Street AS Street, res.Address_Number AS Num
FROM (
SELECT *
FROM Resource
NATURAL JOIN (
SELECT ID
FROM Housing
NATURAL LEFT JOIN (
SELECT ID #might need to fix
FROM
Housing_Type
NATURAL LEFT JOIN
Housing_Serve
WHERE Housing_Serve = 'Homeless' AND Housing_Type = 'Shelter' #insert subcategory filters
UNION
SELECT ID
FROM
Housing_Type
NATURAL RIGHT JOIN
Housing_Serve
WHERE Housing_Serve = 'Homeless' AND Housing_Type = 'Shelter' #insert subcategory filters
) subCat
WHERE Gender = 'Female' #insert category filters
) category
WHERE Non_Citizen = 0 #insert resource filters
) res
NATURAL LEFT JOIN (
SELECT ID, AVG(Rating) AS avg_rating
FROM Reviews
GROUP BY ID
) rev
ORDER BY rev.avg_rating DESC;
/*
See user favorites
*/
SELECT rev.avg_rating AS Rating, res.name AS Name, res.description AS Description, res.Address_State AS State,
res.Address_City AS city, res.Address_Zip AS Zip, res.Address_Street AS Street, res.Address_Number AS Num
FROM (
SELECT *
FROM (
SELECT ID
FROM User_Favorites
WHERE Username = 'SonikaF' #insert username here
) favs
NATURAL JOIN Resource
) res
NATURAL LEFT JOIN (
SELECT ID, AVG(Rating) AS avg_rating
FROM Reviews
GROUP BY ID
) rev
ORDER BY rev.avg_rating DESC;
/*
See if resource is a favorite
*/
SELECT * #if empty set, then not a fav
FROM User_Favorites
WHERE Username = 'SonikaF' AND ID = 1; #insert user's username and resource's ID
/*
pull ratings for a resource
*/
SELECT Rating, Testimonial
FROM Reviews
WHERE ID = 1; #insert ID here