SQL将两个完全独立的表组合为一个

时间:2017-12-07 22:27:41

标签: sql

我对SQL非常陌生并且自学成才。我有两个SQL,但是我开始工作了。现在我需要将它们组合成一个并且我迷失了。

SELECT
    s.lastfirst,
    s.student_number,
    SUM(tr.howmany) 
FROM
    students s 
JOIN 
    truancies tr ON s.id = tr.studentid 
WHERE
    s.enroll_status = 0 AND
    s.schoolid = ~(curschoolid)
GROUP BY
    s.lastfirst, s.student_number 
HAVING
    SUM(tr.howmany) > 0
ORDER BY
    s.lastfirst

这张表:

SELECT 
    S.DCID as DCID,
    S.LASTFIRST as LASTFIRST,
    S.STUDENT_NUMBER as STUDENT_NUMBER,
    S2.FC_SRVC_HRS_DUE as FC_SRVC_HRS_DUE,
    CASE 
       WHEN S2.FC_SRVC_HRS_COMPLETED IS NULL 
          THEN '0' 
          ELSE S2.FC_SRVC_HRS_COMPLETED 
    END AS FC_SRVC_HRS_COMPLETED,
    S2.FC_SRVC_HRS_BUYOUT as FC_SRVC_HRS_BUYOUT,
    CASE
       WHEN S2.FC_SRVC_HRS_COMPLETED IS NULL 
          THEN S2.FC_SRVC_HRS_DUE * S2.FC_SRVC_HRS_BUYOUT
          ELSE ((S2.FC_SRVC_HRS_DUE - S2.FC_SRVC_HRS_COMPLETED) * S2.FC_SRVC_HRS_BUYOUT) 
    END as Balance_Due
FROM
    STUDENTS S, U_STUDENTSUSERFIELDS S2 
WHERE
    S.DCID = S2.STUDENTSDCID AND
    s.enroll_status = 0 AND
    s.schoolid = ~(curschoolid) AND 
    (((S2.FC_SRVC_HRS_DUE - S2.FC_SRVC_HRS_COMPLETED) * S2.FC_SRVC_HRS_BUYOUT) > 0 OR
    ((S2.FC_SRVC_HRS_DUE - S2.FC_SRVC_HRS_COMPLETED) * S2.FC_SRVC_HRS_BUYOUT) IS NULL) AND
    S2.FC_SRVC_HRS_DUE >.1
ORDER BY
    s.lastfirst

我真正想要的是这两者的总和。我希望第一个表中的SUM(tr.howmany)和第二个表中的余额,但我需要那里的过滤器。这将按学生排序。我希望我有意义。任何援助将不胜感激。

1 个答案:

答案 0 :(得分:0)

您可以将两个单独的SQL select语句连接在一起:

 echo '<td  style="color:Maroon" bgcolor="#888888">
       <input type="checkbox" id="selAllAttId" onclick="selAllAtt()">
       <b>Num</b>
       </td>';

只要您有一个共同的字段加入,这将起作用。在你的情况下,student_number看起来是一个很好的候选人。您必须在子查询之外进行排序。