2017-07-06 51 views
0

enter image description here我的SQL查詢: -SQL操作進行單列,列

SELECT 
(s.Mark*0.8+((i.OutOf)*sum(i.Mark)/9000)+((ai.OutOf)*sum(ai.Mark) /180)+a.Mark) 
AS final 
from mark_semester s, 
    mark_assignment ai, 
    mark_internaltest i, 
    mark_attendance a, 
    master_student ms 
WHERE s.SubjectId=i.SubjectId and 
     s.SubjectId=ai.SubjectId 
     and s.SubjectId=a.SubjectId 
     and s.SubjectId='1' 
     AND s.RegNo=i.RegNo 
     and s.RegNo=ai.RegNo 
     and s.RegNo=a.RegNo 
     and s.RegNo=ms.RegNo 
     and s.RegNo='100' 
     and s.Semester=i.Semester 
     and s.Semester=ai.Semester 
     and s.Semester=a.Semester 
     and s.Semester='1' 

在此查詢我要輸入多個subjectidsregnos獲取數據
任何一個可以幫助我解決這個問題。

+1

(1)*不要*的'FROM'子句中使用逗號。 *總是*使用正確的,明確的'JOIN'語法。 (2)我刪除了不兼容的數據庫標籤。 (3)你沒有問題。 –

+0

ü可以給我修改後的查詢,請 –

+1

可以使用IN子句s.SubjectId在(「1」,「2」,3' )和同爲REGNO的 –

回答

1

可以使用IN MySQL的操作來處理多個SubjectIdRegNo,像這樣:

SELECT (s.Mark*0.8+((i.OutOf)*sum(i.Mark)/9000)+((ai.OutOf)*sum(ai.Mark)/180)+a.Mark) AS final 
from mark_semester s 
    join mark_assignment ai on s.SubjectId=ai.SubjectId 
    join mark_internaltest i on s.SubjectId=i.SubjectId 
    join mark_attendance a on s.SubjectId=a.SubjectId 
    join master_student ms on s.RegNo=ms.RegNo 
WHERE 
    s.SubjectId in ('1','2') AND 
    s.RegNo in ('100','101') and 
    s.Semester='1' 
+0

兄弟這個代碼是很好的優化的一個上線4和5小的修正 –

+0

是它的工作對你(不要標記不參與產品。)? –

+0

是隻得到一個行和列asusual –