0

table 1 と table 2 の2 つの mysql テーブルがあります。
表 1には、コンマで区切られたサブジェクト ID (例: 1,2,3) を含むタイプ varchar のフィールド「subjectcat」が含まれています。
表 2には、生徒のマークを含むタイプ float のフィールド「マーク」が含まれています。被験者IDがテーブル1からのものであるテーブル2からマークの合計を取得したい.

クエリがあります

  select t1.subjectcat, sum(t2.mark) 
  from table t1, table t2 
  where t2.subjectid in (t1.subjectcat). 

しかし、このクエリは正しい合計点を与えることができませんが、最初の件名 (subjectid) のみの点を与えます。

クエリを修正して正しい結果を得るにはどうすればよいですか?

4

2 に答える 2

0

集計 SUM() のため、1 行しか返されないのは正常です。GROUP BY t2.subjectid問題が解決する場合は、クエリの最後に追加してみてください。

于 2013-06-09T05:40:17.490 に答える
0

目標を達成するためにFIND_IN_SET()使用できますJOIN

SELECT t1.subjectcat, SUM(t2.mark) sum_mark
  FROM table1 t1 JOIN table2 t2
    ON FIND_IN_SET(t2.subjectid, t1.subjectcat) > 0

これがSQLFiddleのデモです

そうは言っても、db スキーマを正規化することを強くお勧めします。

于 2013-06-09T05:48:25.987 に答える