Php 修改联接查询以向查询添加新值

Php 修改联接查询以向查询添加新值,php,mysql,Php,Mysql,下面的查询运行良好。它从3个MySQL表中提取信息:login、submission和comment 它基于从这三个表中提取的值的计算,创建一个名为totalScore2的值 MySQL表“comment”和“submission”都有以下字段: loginid submissionid 在表“submission”中,每个“submissionid”只有一个条目/行,因此只有一个与之关联的“loginid” 在“comment”表中,“submissionid”字段可以有多个条目/行,并且可

下面的查询运行良好。它从3个MySQL表中提取信息:login、submission和comment

它基于从这三个表中提取的值的计算,创建一个名为totalScore2的值

MySQL表“comment”和“submission”都有以下字段:

loginid submissionid
在表“submission”中,每个“submissionid”只有一个条目/行,因此只有一个与之关联的“loginid”

在“comment”表中,“submissionid”字段可以有多个条目/行,并且可以与多个“loginid”关联

每次“评论”中的一个“submissionid”与表“submission”中的同一个“loginid”相关联时,我想将此作为一个因素添加到下面的等式中。我希望多次使用类似的实例(-10)

我怎么能这样做

提前感谢,

约翰


我自己想出来的。见下文。
$sqlStr2 = "SELECT 
    l.loginid, 
    l.username, 
    l.created,
    DATEDIFF(NOW(), l.created) + COALESCE(s.total, 0) * 5 + COALESCE(scs.total, 0) * 10 + COALESCE(c.total, 0) AS totalScore2
FROM login l    
LEFT JOIN (
    SELECT loginid, COUNT(1) AS total 
    FROM submission 
    GROUP BY loginid
) s ON l.loginid = s.loginid
LEFT JOIN (
    SELECT loginid, COUNT(1) AS total 
    FROM comment 
    GROUP BY loginid
) c ON l.loginid = c.loginid
LEFT JOIN (
    SELECT S2.loginid, COUNT(1) AS total 
    FROM submission S2
    INNER JOIN comment C2
    ON C2.submissionid = S2.submissionid
    GROUP BY S2.loginid
) scs ON scs.loginid = l.loginid
GROUP BY l.loginid
ORDER BY totalScore2 DESC 
LIMIT 25";
    $sqlStr3 = "SELECT 
        l.loginid, 
        l.username, 
     l.created,
     DATEDIFF(NOW(), l.created) + COALESCE(s.total, 0) * 5 + COALESCE(scs.total, 0) * 10 - COALESCE(nscs.total, 0) * 10 + COALESCE(c.total, 0) AS totalScore2
    FROM login l    
    LEFT JOIN (
        SELECT loginid, COUNT(1) AS total 
        FROM submission 
        GROUP BY loginid
    ) s ON l.loginid = s.loginid
    LEFT JOIN (
        SELECT loginid, COUNT(1) AS total 
        FROM comment 
        GROUP BY loginid
    ) c ON l.loginid = c.loginid

    LEFT JOIN (
        SELECT S2.loginid, COUNT(1) AS total 
        FROM submission S2
        INNER JOIN comment C2
        ON C2.submissionid = S2.submissionid
        GROUP BY S2.loginid
    ) scs ON scs.loginid = l.loginid


    LEFT JOIN (
        SELECT S2.loginid, COUNT(1) AS total 
        FROM submission S2
        INNER JOIN comment C2
        ON C2.submissionid = S2.submissionid
     AND C2.loginid = S2.loginid
        GROUP BY S2.loginid
    ) nscs ON nscs.loginid = l.loginid



    GROUP BY l.loginid
    ORDER BY totalScore2 DESC 
    LIMIT 25";