gpt4 book ai didi

php - 比较/评估 mysql 中的两个子查询

转载 作者:行者123 更新时间:2023-11-29 00:53:52 25 4
gpt4 key购买 nike

我想创建第三个选择,如果分数等于 maxscore ,它会说通过,否则会失败。这是要评估的查询...

我该怎么做?我可以创建第三个子查询 AS Status,还是需要在变量上创建??

SELECT DISTINCT 
qui.title AS Course_Name,
(SELECT sum(score)
FROM jos_jquarks_quizzes_answersessions
WHERE score IS NOT NULL
AND quizsession_id = quizSession.id
AND status <> -1 ) AS score,
(SELECT count(distinct question_id)
FROM jos_jquarks_quizzes_answersessions
WHERE quizsession_id = quizSession.id) AS maxScore,
(SELECT count(distinct question_id)
FROM jos_jquarks_quizzes_answersessions
WHERE quizsession_id = quizSession.id ) AS QuizStatus,
DATE_FORMAT(quizSession.finished_on,'%W, %M %e, %Y @ %h:%i %p') As Finished
FROM
jos_jquarks_quizsession AS quizSession
LEFT JOIN
jos_jquarks_users_quizzes AS users_quizzes ON users_quizzes.id = quizSession.affected_id
LEFT JOIN
jos_jquarks_quizzes AS qui ON users_quizzes.quiz_id = qui.id
LEFT JOIN
jos_jquarks_quizzes_answersessions AS quizSessAns ON quizSessAns.quizsession_id = quizSession.id
LEFT JOIN
jos_jquarks_sessionwho AS sessionWho ON sessionWho.session_id = quizSession.id
LEFT JOIN
jos_jquarks_users_profiles AS users_profiles ON users_profiles.user_id = sessionWho.user_id
LEFT JOIN
jos_jquarks_profiles AS profiles ON profiles.id = users_profiles.profile_id
WHERE
sessionWho.user_id = '246'

最佳答案

如果您不需要返回 score 或 maxscore 那么您可以简单地比较两个子查询表达式:

SELECT quizSession.id, IF(
(SELECT sum(score)
FROM jos_jquarks_quizzes_answersessions
WHERE score IS NOT NULL AND quizsession_id = quizSession.id AND status <> -1) =
(SELECT count(distinct question_id)
FROM jos_jquarks_quizzes_answersessions
WHERE quizsession_id = quizSession.id), "Pass", "Fail") AS status
FROM quizSession

如果您确实需要所有列,您最好将子查询编写为连接:

SELECT quizSession.id, sum_subquery.score_sum AS score, max_subquery.max_score,
IF(sum_subquery.score_sum = max_subquery.max_score, "Pass", "Fail") AS status
FROM quizSession
INNER JOIN (
SELECT quizsession_id, sum(score) AS score_sum
FROM jos_jquarks_quizzes_answersessions
WHERE score IS NOT NULL AND status <> -1
GROUP BY quizSession_id
) AS sum_subquery ON quizSession.id = sum_subquery.quizsession_id
INNER JOIN (
SELECT quizsession_id, count(distinct question_id)
FROM jos_jquarks_quizzes_answersessions
GROUP BY quizsession_id
) AS max_subquery ON quizSession.id = max_subquery.quizsession_id

关于php - 比较/评估 mysql 中的两个子查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7084939/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com