2011-07-21 14 views
0

私はmysqlのSUM(サイズ)を知っていますが、何らかの理由でこれをrazor cshtmlで構築していますが、同じではなく、cshtmlで2つの数値を加算したり減算したりします。では、行サイズを加算するのに適切な関数は何でしょうか?A列のためのCSHTML/SQL SUM

コード:

@{ 
    Page.Title = "Home @"; 
    var PageTitle = "Home"; 

    var db = Database.Open("PhotoGallery"); 
    var shows = db.Query(@"SELECT * FROM Shows").ToList(); 
    var seasons = db.Query(@"SELECT * FROM Seasons").ToList(); 
    var episodes = db.Query(@"SELECT * FROM Episodes").ToList(); 
    var comics = db.Query(@"SELECT * FROM Comics").ToList(); 
    var artists = db.Query(@"SELECT * FROM Artists").ToList(); 
    var albums = db.Query(@"SELECT * FROM Albums").ToList(); 
    var comicsize = db.Query(@"SELECT SUM(size) FROM Comics").ToList(); 
    var totalsizeb = comicsize; 
} 

<h1>@PageTitle</h1> 
<p align="center"> 
    @shows.Count TV Shows | @seasons.Count Seasons | @episodes.Count Episodes | @comics.Count Comics | @artists.Count Artists | @albums.Count Albums<br /> 
    Bytes | MB | GB | TB 
</p> 

エラー:

Exception Details: System.Data.SqlServerCe.SqlCeException: The specified argument value for the 
function is not valid. [ Argument # = 1,Name of function(if known) = SUM ] 
+0

例外は 'SqlServerCe'内にあり、それは剃刀とは関係ありません。結果は 'int'でなければならないので、' ToList() 'に変換する必要はありません。 (または他の数値データ型) 'db.ExecuteScalar (" SELECT ... ")'おそらくより適切な(あなたが使用しているフレームワークがわからない) – Buildstarted

+0

私はwebmatrixをダウンロードして、しかし、そこにcshtmlファイルタイプがあり、先週周りにそれを調べ始めることに気付いた。 – rackemup420

+0

'size'カラムが' Comics'テーブルに存在しないこともあります。 – Buildstarted

答えて

1

あなたは、各テーブルのCountで唯一興味があればすべきSELECT COUNT(*) FROM Showsなどではなく、各テーブルからすべてのデータを引っ張っよりちょうどカウントを得るために。

@{ 
    Page.Title = "Home @"; 
    var PageTitle = "Home"; 

    var db = Database.Open("PhotoGallery"); 
    var shows = (int)db.QueryValue(@"SELECT Count(*) FROM Shows"); 
    var seasons = (int)db.QueryValue(@"SELECT Count(*) FROM Seasons"); 
    var episodes = (int)db.QueryValue(@"SELECT Count(*) FROM Episodes"); 
    var comics = (int)db.QueryValue(@"SELECT Count(*) FROM Comics"); 
    var artists = (int)db.QueryValue(@"SELECT Count(*) FROM Artists"); 
    var albums = (int)db.QueryValue(@"SELECT Count(*) FROM Albums"); 
    var comicsize = (int)db.QueryValue(@"SELECT SUM(size) FROM Comics"); 
    var totalsizeb = comicsize; 
} 

<h1>@PageTitle</h1> 
<p align="center"> 
    @shows TV Shows | @seasons Seasons | @episodes Episodes | @comics Comics | @artists Artists | @albums Albums<br /> 
     Bytes | MB | GB | TB 
</p> 

SUMだけなintnumericmoneyとして数値型で動作し、float列がテーブル内のこれらのタイプのいずれかであることを確認してください。

+0

のような値を含んでいますか?同じエラー: 'System.Data.SqlServerCe.SqlCeException:関数の指定された引数の値が無効です。 [引数番号= 1、関数の名前(既知の場合)= SUM] ' – rackemup420

+0

' size'列が 'int'として設定されています – rackemup420

+0

はnullのいずれかの値ですか? – Buildstarted