Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/61.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/sharepoint/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql 显示包含子查询和多个联接的两列之和的行_Mysql - Fatal编程技术网

Mysql 显示包含子查询和多个联接的两列之和的行

Mysql 显示包含子查询和多个联接的两列之和的行,mysql,Mysql,你好,我快要爆炸了。。我已经试了好几个小时让它工作。我已经为其他人找到了不同的解决方案,并试图重写它,使其适合我的脚本,但它只是无法正常工作 关于Barmar对本帖的引用: 我有一点进展,但我无法让它打印出它应该打印的内容 我尝试了很多变体,并在连接处等处移动,但没有任何运气。这是最接近我想要的结果的查询: SELECT qs.statistic_ref_id, qs.question_id, SUM(qs.correct_count) AS count_correct,

你好,我快要爆炸了。。我已经试了好几个小时让它工作。我已经为其他人找到了不同的解决方案,并试图重写它,使其适合我的脚本,但它只是无法正常工作

关于Barmar对本帖的引用: 我有一点进展,但我无法让它打印出它应该打印的内容

我尝试了很多变体,并在连接处等处移动,但没有任何运气。这是最接近我想要的结果的查询:

SELECT
    qs.statistic_ref_id,
    qs.question_id,
    SUM(qs.correct_count) AS count_correct,
    qs2.total_count_2 AS total_count,
    sr.user_id,
    sr.quiz_id,
    qq.title AS ny_titel,
    qq.category_id,
    SUBSTRING(qq.title,1,4) AS get_type_number,
    pl.points
    FROM pro_quiz_statistic AS qs 
    JOIN pro_quiz_statistic_ref sr ON sr.statistic_ref_id = qs.statistic_ref_id
    JOIN pro_quiz_question qq ON qq.id = qs.question_id
    JOIN user_points_log pl ON pl.quiz_id = sr.quiz_id AND pl.user_id = '$user_id'

    JOIN ( SELECT
        qs3.statistic_ref_id,
        qs3.question_id,
        SUM(qs3.correct_count + qs3.incorrect_count) AS total_count_2,
        sr3.user_id,
        sr3.quiz_id,
        qq3.title AS ny_titel_2,
        qq3.category_id,
        SUBSTRING(qq3.title,1,4) AS get_type_number_2,
        pl3.points
        FROM pro_quiz_statistic AS qs3 
        JOIN pro_quiz_statistic_ref sr3 ON sr3.statistic_ref_id = qs3.statistic_ref_id
        JOIN pro_quiz_question qq3 ON qq3.id = qs3.question_id
        JOIN user_points_log pl3 ON pl3.quiz_id = sr3.quiz_id AND pl3.user_id = '$user_id'
        WHERE sr3.user_id = '$user_id' AND
        qq3.category_id = '3'
        GROUP BY get_type_number_2 ORDER BY qs3.question_id 
    ) qs2 ON qs2.statistic_ref_id = sr.statistic_ref_id
    WHERE sr.user_id = '$user_id' AND
    qq.category_id = '3'
    GROUP BY get_type_number ORDER BY qs.question_id
您可以在此图片(右侧)中看到此结果的结果:

前两个表分别是查询的图片,应该打印出来。只需一次查询

我尝试了以下两个子查询:

SELECT

    qs.statistic_ref_id,
    qs.question_id,
    qs2.correct_count AS count_correct,
    qs3.total_count_2 AS total_count,
    sr.user_id,
    sr.quiz_id,
    qq.category_id,
    SUBSTRING(qq.title,1,4) AS get_type_number,
    pl.points
    FROM pro_quiz_statistic AS qs
    JOIN pro_quiz_statistic_ref sr ON sr.statistic_ref_id = qs.statistic_ref_id
    JOIN pro_quiz_question qq ON qq.id = qs.question_id
    JOIN user_points_log pl ON pl.quiz_id = sr.quiz_id AND pl.user_id = '$user_id'
    JOIN (

    SELECT
        qs2.statistic_ref_id,
        qs2.question_id,
        SUM(qs2.correct_count) AS count_correct_2,
        sr2.user_id,
        sr2.quiz_id,
        qq2.category_id,
        SUBSTRING(qq2.title,1,4) AS get_type_number_2,
        pl2.points
        FROM pro_quiz_statistic AS qs2 
        JOIN pro_quiz_statistic_ref sr2 ON sr2.statistic_ref_id = qs2.statistic_ref_id
        JOIN pro_quiz_question qq2 ON qq2.id = qs2.question_id
        JOIN user_points_log pl2 ON pl2.quiz_id = sr2.quiz_id AND pl2.user_id = '$user_id'
        WHERE sr2.user_id = '$user_id' AND
        qq2.category_id = '3'
        GROUP BY get_type_number_2 
        ORDER BY qs2.question_id
    ) qs2 ON qs2.statistic_ref_id = qs.statistic_ref_id
    JOIN ( SELECT
        qs3.statistic_ref_id,
        qs3.question_id,
        SUM(qs3.correct_count + qs3.incorrect_count) AS total_count_2,
        sr3.user_id,
        sr3.quiz_id,
        qq3.category_id,
        SUBSTRING(qq3.title,1,4) AS get_type_number_3,
        pl3.points
        FROM pro_quiz_statistic AS qs3 
        JOIN pro_quiz_statistic_ref sr3 ON sr3.statistic_ref_id = qs3.statistic_ref_id
        JOIN pro_quiz_question qq3 ON qq3.id = qs3.question_id
        JOIN user_points_log pl3 ON pl3.quiz_id = sr3.quiz_id AND pl3.user_id = '$user_id'
        WHERE sr3.user_id = '$user_id' AND
        qq3.category_id = '3'
        GROUP BY get_type_number_3 
        ORDER BY qs3.question_id 
    ) qs3 ON qs3.statistic_ref_id = qs.statistic_ref_id

    WHERE sr.user_id = '$user_id' AND
    qq.category_id = '3'
    GROUP BY get_type_number 
    ORDER BY qs.question_id
但它不会打印任何东西。这项工作:

SELECT
    qs.statistic_ref_id,
    qs.question_id,
    SUM(qs.correct_count) AS count_correct,
    sr.user_id,
    sr.quiz_id,
    qq.title AS ny_titel,
    qq.category_id,
    SUBSTRING(qq.title,1,4) AS get_type_number,
    pl.points
    FROM pro_quiz_statistic AS qs 
    JOIN pro_quiz_statistic_ref sr ON sr.statistic_ref_id = qs.statistic_ref_id
    JOIN pro_quiz_question qq ON qq.id = qs.question_id
    JOIN user_points_log pl ON pl.quiz_id = sr.quiz_id AND pl.user_id = '$user_id'

    WHERE sr.user_id = '$user_id' AND
    qq.category_id = '3'
    GROUP BY get_type_number ORDER BY qs.question_id
还有这个(如果我单独运行它们):


但是我怎样才能将这两个查询组合成一个查询呢?

只需将两个子查询连接起来。您误用了臭名昭著的非标准MySQL扩展到GROUP BY。排除此查询故障的第一步是使用标准的GROUP by消除结果中的不可预测性。读这个。你的问题真长。你可以删除那些不必要的文字,只保留那些你希望有人帮助你的文字,这样会吸引更多的人阅读和回答:谢谢你的评论。我从一半的文本/代码开始,但它变得如此之长的原因是因为建议尝试子查询等,所以我将此添加到问题中。我会减少它。:-)
SELECT
    qs.statistic_ref_id,
    qs.question_id,
    SUM(qs.correct_count + qs.incorrect_count) AS count_correct,
    sr.user_id,
    sr.quiz_id,
    qq.title AS ny_titel,
    qq.category_id,
    SUBSTRING(qq.title,1,4) AS get_type_number,
    pl.points
    FROM pro_quiz_statistic AS qs 
    JOIN pro_quiz_statistic_ref sr ON sr.statistic_ref_id = qs.statistic_ref_id
    JOIN pro_quiz_question qq ON qq.id = qs.question_id
    JOIN user_points_log pl ON pl.quiz_id = sr.quiz_id AND pl.user_id = '$user_id'
    WHERE sr.user_id = '$user_id' AND
    qq.category_id = '3'
    GROUP BY get_type_number ORDER BY qs.question_id