-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathdatabase_queries.sql
More file actions
116 lines (106 loc) · 2.25 KB
/
database_queries.sql
File metadata and controls
116 lines (106 loc) · 2.25 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
-- ServicePro Database Queries
-- Use these queries to check your database data
-- 1. View all users with their roles
SELECT
id,
name,
email,
role,
phone,
pincode,
created_at
FROM user
ORDER BY created_at DESC;
-- 2. View service providers with their details
SELECT
sp.id,
u.name,
u.email,
u.phone,
sp.service_categories,
sp.service_pincodes,
sp.status,
sp.hourly_rate,
sp.experience_years
FROM service_provider sp
JOIN user u ON sp.user_id = u.id
ORDER BY sp.id;
-- 3. View all services
SELECT
id,
category,
description,
base_price,
is_active
FROM service
ORDER BY category;
-- 4. View all bookings with details
SELECT
b.id,
u.name as customer_name,
p.user_id as provider_id,
s.category as service_type,
b.booking_date,
b.status,
b.total_amount,
b.address,
b.created_at
FROM booking b
JOIN user u ON b.user_id = u.id
JOIN service_provider sp ON b.provider_id = sp.id
JOIN user p ON sp.user_id = p.id
JOIN service s ON b.service_id = s.id
ORDER BY b.created_at DESC;
-- 5. View reviews and ratings
SELECT
r.id,
u.name as reviewer_name,
p.user_id as provider_id,
r.rating,
r.comments,
r.created_at
FROM review r
JOIN user u ON r.user_id = u.id
JOIN service_provider sp ON r.provider_id = sp.id
JOIN user p ON sp.user_id = p.id
ORDER BY r.created_at DESC;
-- 6. View messages between users
SELECT
m.id,
s.name as sender_name,
r.name as receiver_name,
m.message,
m.timestamp,
m.is_read
FROM message m
JOIN user s ON m.sender_id = s.id
JOIN user r ON m.receiver_id = r.id
ORDER BY m.timestamp DESC;
-- 7. Get booking statistics
SELECT
status,
COUNT(*) as count
FROM booking
GROUP BY status;
-- 8. Get user statistics by role
SELECT
role,
COUNT(*) as count
FROM user
GROUP BY role;
-- 9. Get provider statistics by status
SELECT
status,
COUNT(*) as count
FROM service_provider
GROUP BY status;
-- 10. Get average rating for each provider
SELECT
u.name as provider_name,
AVG(r.rating) as average_rating,
COUNT(r.id) as total_reviews
FROM service_provider sp
JOIN user u ON sp.user_id = u.id
LEFT JOIN review r ON sp.id = r.provider_id
GROUP BY sp.id, u.name
ORDER BY average_rating DESC;