Bir sorgu için yeni bir değer eklemek için join sorgusu Değişiklik Yapılmasına Dair

0 Cevap php

Aşağıdaki sorgu iyi çalışıyor. Giriş, sunulması, ve yorum: Bu 3 MySQL tablodan bilgi çeker.

Bu değerlerin hesaplanmasında esas totalScore2 denilen bir değer bu üç tablolardan çekti oluşturur.

MySQL tablo "yorum" ve "teslim" hem de aşağıdaki alanları var:

loginid submissionid

Tablosunda "sunulması," her "submissionid" tek giriş / satır vardır, ve böylece sadece bir "LoginID" ile ilişkili.

Tablosunda "açıklama," alan "submissionid" birkaç giriş / satır olabilir, ve çoklu ile ilişkili olabilir s "LoginID".

"Açıklama" in "submissionid" s biridir her zaman o tablo içinde "gönderme," Ben aşağıda denkleme bir faktör olarak eklemek istiyorum olduğu aynı "LoginID" ile ilişkilidir. Ben bu kez (-10) gibi birden çok örneğini istiyorum.

Bunu nasıl yapabilir?

Teşekkür peşin,

John

$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";

0 Cevap