Initial commit of akmon project
This commit is contained in:
91
simple_student_query.sql
Normal file
91
simple_student_query.sql
Normal file
@@ -0,0 +1,91 @@
|
||||
-- 简化版学生数据查询脚本
|
||||
-- 当健康数据视图不存在时的备用方案
|
||||
|
||||
-- 1. 创建一个简单的学生信息视图(不包含健康数据)
|
||||
CREATE OR REPLACE VIEW public.v_student_basic_info AS
|
||||
SELECT
|
||||
u.id as user_id,
|
||||
u.username as name,
|
||||
COALESCE(u.email, u.username) as student_id, -- 使用email或username作为学号
|
||||
u.avatar_url as avatar,
|
||||
u.class_id,
|
||||
c.name as class_name,
|
||||
g.name as grade_name,
|
||||
s.name as school_name,
|
||||
-- 默认健康数据字段(为了兼容前端)
|
||||
NULL::numeric as temperature_c,
|
||||
NULL::timestamp as temp_time,
|
||||
NULL::numeric as heart_rate_bpm,
|
||||
NULL::timestamp as heart_time,
|
||||
NULL::numeric as spo2_percent,
|
||||
NULL::timestamp as spo2_time,
|
||||
NULL::numeric as step_count,
|
||||
NULL::timestamp as steps_time
|
||||
FROM public.ak_users u
|
||||
LEFT JOIN public.ak_classes c ON u.class_id = c.id
|
||||
LEFT JOIN public.ak_grades g ON c.grade_id = g.id
|
||||
LEFT JOIN public.ak_schools s ON g.school_id = s.id
|
||||
WHERE u.role = 'student';
|
||||
|
||||
-- 2. 检查系统中存在的表
|
||||
SELECT
|
||||
table_schema,
|
||||
table_name,
|
||||
table_type
|
||||
FROM information_schema.tables
|
||||
WHERE table_schema = 'public'
|
||||
AND (
|
||||
table_name LIKE '%student%' OR
|
||||
table_name LIKE '%health%' OR
|
||||
table_name LIKE '%sensor%' OR
|
||||
table_name LIKE '%ss_%' OR
|
||||
table_name = 'ak_users'
|
||||
)
|
||||
ORDER BY table_name;
|
||||
|
||||
-- 3. 查看ak_users表的结构
|
||||
SELECT
|
||||
column_name,
|
||||
data_type,
|
||||
is_nullable,
|
||||
column_default
|
||||
FROM information_schema.columns
|
||||
WHERE table_schema = 'public'
|
||||
AND table_name = 'ak_users'
|
||||
ORDER BY ordinal_position;
|
||||
|
||||
-- 4. 测试基础查询:获取某个班级的学生
|
||||
-- 这是前端当前使用的查询逻辑
|
||||
SELECT
|
||||
id,
|
||||
username as name,
|
||||
email as student_id,
|
||||
avatar_url as avatar,
|
||||
class_id,
|
||||
school_id,
|
||||
grade_id,
|
||||
role
|
||||
FROM public.ak_users
|
||||
WHERE role = 'student'
|
||||
AND class_id IS NOT NULL
|
||||
ORDER BY username
|
||||
LIMIT 10;
|
||||
|
||||
-- 5. 模拟前端查询:假设当前用户属于某个班级
|
||||
WITH current_user_class AS (
|
||||
-- 模拟当前用户的class_id
|
||||
SELECT class_id
|
||||
FROM public.ak_users
|
||||
WHERE class_id IS NOT NULL
|
||||
LIMIT 1
|
||||
)
|
||||
SELECT
|
||||
u.id,
|
||||
u.username as name,
|
||||
u.email as student_id,
|
||||
u.avatar_url as avatar,
|
||||
u.class_id
|
||||
FROM public.ak_users u
|
||||
JOIN current_user_class cuc ON u.class_id = cuc.class_id
|
||||
WHERE u.role = 'student'
|
||||
ORDER BY u.username;
|
||||
Reference in New Issue
Block a user