guoyu/Test/sql/检查题库问题.sql

175 lines
5.1 KiB
SQL
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

-- 检查题库导入问题诊断SQL
-- 问题:在考试管理中无法看到新建的题库
-- ========================================
-- 第1步检查题库数据
-- ========================================
-- 1.1 查看所有题库及其创建者信息
SELECT
id AS ID,
bank_name AS ,
subject_name AS ,
question_count AS ,
create_user_id AS ID,
create_by AS ,
create_time AS
FROM study_question_bank
ORDER BY create_time DESC;
-- 1.2 检查哪些题库的 create_user_id 为空
SELECT
id AS ID,
bank_name AS ,
CASE
WHEN create_user_id IS NULL THEN '❌ create_user_id为空'
ELSE '✓ 有创建用户ID'
END AS ,
create_by AS ,
create_time AS
FROM study_question_bank
ORDER BY create_time DESC;
-- ========================================
-- 第2步检查用户信息
-- ========================================
-- 2.1 查看当前登录用户的ID需要在实际使用时替换
-- 从 sys_user 表查找你的用户ID
SELECT
user_id AS ID,
user_name AS ,
nick_name AS ,
create_time AS
FROM sys_user
WHERE user_name = 'admin' -- ⚠️ 替换为你的登录用户名
OR nick_name LIKE '%教师%';
-- ========================================
-- 第3步检查题库与用户的关联
-- ========================================
-- 3.1 检查题库是否关联到正确的用户
SELECT
b.id AS ID,
b.bank_name AS ,
b.create_user_id AS ID,
u.user_name AS ,
u.nick_name AS ,
CASE
WHEN b.create_user_id IS NULL THEN '❌ 未关联用户'
WHEN u.user_id IS NULL THEN '❌ 用户不存在'
ELSE '✓ 正常'
END AS
FROM study_question_bank b
LEFT JOIN sys_user u ON b.create_user_id = u.user_id
ORDER BY b.create_time DESC;
-- ========================================
-- 第4步检查题库中的题目
-- ========================================
-- 4.1 查看题库中是否有题目
SELECT
b.id AS ID,
b.bank_name AS ,
b.question_count AS ,
COUNT(i.id) AS ,
CASE
WHEN COUNT(i.id) = 0 THEN '❌ 题库为空'
WHEN b.question_count != COUNT(i.id) THEN '⚠️ 数量不一致'
ELSE '✓ 正常'
END AS
FROM study_question_bank b
LEFT JOIN study_question_bank_item i ON b.id = i.bank_id
GROUP BY b.id, b.bank_name, b.question_count
ORDER BY b.create_time DESC;
-- 4.2 查看题目详情
SELECT
i.id AS ID,
i.bank_id AS ID,
b.bank_name AS ,
i.question_type AS ,
LEFT(i.question_content, 50) AS ,
i.create_time AS
FROM study_question_bank_item i
LEFT JOIN study_question_bank b ON i.bank_id = b.id
ORDER BY i.create_time DESC
LIMIT 20;
-- ========================================
-- 第5步修复方案根据诊断结果选择执行
-- ========================================
-- 方案A如果 create_user_id 为空,手动关联到当前用户
-- ⚠️ 执行前请先确认你的用户ID
-- 例如假设你的用户ID是 1admin通常是1
-- 查看需要修复的题库
SELECT
id AS ID,
bank_name AS ,
create_by AS
FROM study_question_bank
WHERE create_user_id IS NULL;
-- 修复:将 create_user_id 设置为当前用户ID
-- UPDATE study_question_bank
-- SET create_user_id = 1 -- ⚠️ 替换为你的用户ID
-- WHERE create_user_id IS NULL;
-- 方案B如果题库的 question_count 不准确,重新统计
UPDATE study_question_bank b
SET question_count = (
SELECT COUNT(*)
FROM study_question_bank_item i
WHERE i.bank_id = b.id
);
-- ========================================
-- 第6步验证修复结果
-- ========================================
-- 6.1 验证:模拟后端查询(当前用户的题库)
-- ⚠️ 将 1 替换为你的实际用户ID
SELECT
id AS ID,
bank_name AS ,
subject_name AS ,
question_count AS ,
create_time AS
FROM study_question_bank
WHERE create_user_id = 1 -- ⚠️ 替换为你的用户ID
ORDER BY create_time DESC;
-- 6.2 如果上面的查询有结果,说明修复成功
-- 刷新考试管理页面,应该能看到题库了
-- ========================================
-- 使用说明
-- ========================================
--
-- 1. 先执行第1-4步的诊断SQL查看问题原因
-- 2. 根据诊断结果选择执行第5步的修复SQL
-- 3. 执行第6步验证修复结果
-- 4. 刷新前端页面(考试管理 → 创建考试 → 选择题库)
--
-- 常见问题:
-- Q1: 题库列表为空
-- A1: create_user_id 为空执行方案A修复
--
-- Q2: 题库有题目但显示数量为0
-- A2: question_count 不准确执行方案B修复
--
-- Q3: 题库和题目都存在但考试管理中看不到
-- A3: create_user_id 与当前登录用户ID不匹配执行方案A修复
--