繁体   English   中英

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

[英]SQL Query to get results from two tables

我有两个表,一个表名为files_downloads,另一个表称为quiz_attempts,两者共享column = uname

我正在尝试获得两个主要结果(使用两个脚本):1)下载文件并进行测验的用户2)未下载文件(显示NA)和DID测验的用户。 这是我尝试的代码:

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 first second third fourth fifth gol14_02_1_einheit.pdf 11mg onlinelernen_quiz_1 100 0 0 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;

PS:不显示“ NA”,仅选择用户。

我不认为这将是您的最终查询,但是它可以回答您的确切问题,但是只需一个SQL查询即可:

我正在尝试获得两个主要结果(使用两个脚本):1)下载文件并进行测验的用户2)未下载文件(显示NA)和DID测验的用户。

使用CASE语句来计算谁下载了文件并进行了测验以及谁才进行了测验,并使用两个子查询来获取进行的测验次数和每个用户下载的文件数,使用与您在上面的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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM