Mysql 从两个表中获取结果的SQL查询

Mysql 从两个表中获取结果的SQL查询,mysql,Mysql,我有两个表,一个叫做files\u downloads,另一个叫做quick\u attempts,两者都共享column=uname 我正试图通过两个脚本获得两个主要结果 1下载文件并进行测验的用户 2名未下载Show NA文件并进行测验的用户。 以下是我尝试的代码: SELECT f.fname, f.uname, q.qname, q.first, q.second, q.third, q.fourth,q.fifth FROM files_downloaded f JOIN quiz_a

我有两个表,一个叫做files\u downloads,另一个叫做quick\u attempts,两者都共享column=uname

我正试图通过两个脚本获得两个主要结果 1下载文件并进行测验的用户 2名未下载Show NA文件并进行测验的用户。 以下是我尝试的代码:

SELECT f.fname, f.uname, q.qname, q.first, q.second, q.third, q.fourth,q.fifth
FROM files_downloaded f
JOIN quiz_attempts q ON q.uname = f.uname
WHERE f.fname LIKE  '%gol14_%'
AND q.qname LIKE  '%onlinelernen%'
ORDER BY  `f`.`uname` ASC 
LIMIT 0 , 30
我花了5个多小时来解决这个问题,但我不能。我觉得很疯狂

fname uname qname第一第二第三第四第五
gol14_02_1_einheit.pdf 11mg OnlineErnen_Quike_1 100 0 0下载文件并进行测验的用户:

SELECT f.uname FROM files_downloaded f JOIN quiz_attempts q ON(q.uname = f.uname);
未下载文件并进行测验的用户:

SELECT q.uname FROM files_downloaded f RIGHT JOIN quiz_attempts q ON(q.uname = f.uname) WHERE f.fname IS NULL;

注意:不显示NA,只选择用户。

我不认为这是您的最终查询,但它回答了您的确切问题,但只使用了一个SQL查询:

我试图得到两个主要结果,两个脚本1下载文件并做测试的用户2没有下载Show NA文件并做测试的用户

使用案例陈述找出谁下载了一个文件并做了一个测试,而谁刚刚做了一个测试,使用两个子查询获得每个用户的测试次数和下载的文件数量,使用上面WHERE陈述中相同的限制

SELECT 
    CASE 
        WHEN quizcount > 0
            AND dlcount > 0
            THEN "did both"
        WHEN quizcount > 0
            AND dlcount = 0
            THEN "only did quizzes"
        END AS `ActionType`,
    q.uname,
    q.quizcount,
    f.dlcount
FROM (
    SELECT uname,
        count(*) AS quizcount
    FROM quiz_attempts
    WHERE qname LIKE '%onlinelernen%'
    GROUP BY uname
    ) AS q
LEFT JOIN (
    SELECT uname,
        count(*) AS dlcount
    FROM files_downloaded
    WHERE fname LIKE '%gol14_%'
    GROUP BY uname
    ) AS f
    ON q.uname = f.uname
ORDER BY q.uname

q.first、q.second、q.third等是什么。。?如果一个用户下载了一个文件并做了2个问答题怎么办?输出中需要有两行吗?如果一个用户下载了10次,但没有测验,你会在意吗?如果一个用户下载了10个文件,做了5个问答题,你会希望输出中有50条记录吗。ON是一个关键字。你应该得到你想要的结果