2010-08-05 40 views
0

我正在使用一些MySQL表。他們的結構如下所示。將另一個參數添加到聯接查詢中

「登錄」:

loginid username password email actcode disabled activated created points website location age gender 

每個用戶都有一個登錄ID

「提交」:

submissionid loginid title slug url displayurl datesubmitted 

在上面的提交表格中, 「登錄ID」 是的該登錄ID提交提交的用戶。

「評論」:

commentid loginid submissionid comment datecommented 

在上面的評語表,「登錄ID」是誰提出的評論的用戶登錄ID的。 「submitid」是提交評論的提交。

查詢低於(天的登錄ID已經存在)+(由登錄ID總意見書)* 10 +(註釋由登錄ID)排名前25代表登錄ID。

我想包括一個或多個因素:(總評論上submissionids的登錄ID提交製造)* 10

這將要求如下:

  1. 讓所有submissionids在表「提交」給定一個登錄ID
  2. 總結在表中「註釋」有那些submissionids條目總數

何我可以這樣做嗎?

由於提前,

約翰

$sqlStr2 = "SELECT 
    l.loginid, 
    l.username, 
    l.created, 
    DATEDIFF(NOW(), l.created) + COALESCE(s.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 
GROUP BY l.loginid 
ORDER BY totalScore2 DESC 
LIMIT 25"; 

回答

0

介紹下面爲您查詢作爲附加連接,然後包括總* 10到您的totalscore2計算。

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