1

MySQLクエリの1つで問題が発生しています:

SELECT id,Portfolio,Agency,Program,Objective,billion1,value11_12,
    Proportion1,billion,value12_13,Percentage,Difference,
    Diff_Percent,PIT,TOS,Actual_PIT,Actual_TOS,SUM(billion),SUM(Percentage),
    SUM(PIT),SUM(TOS),SUM(Actual_PIT),SUM(Actual_TOS)
FROM budget_table
GROUP BY 'sum(Billion)'
WITH ROLLUP
LIMIT 0,100

クエリは機能しますが、ロールアップで機能するための制限を取得できません。クエリの結果はBudgetAusで確認できます

これは、私が現在達成しようとしている最初の100ではなく、すべての結果を合計したものです。LIMIT 100を使ってみましたが、何も動作しません。データベースのMySQLでEXPLAINを(初めて)使用してみたところ、結果が表示されなかったにもかかわらずクエリが実行されたと表示されましたが、これまで使用したことがなかったため、何を探すべきかわかりませんでした。私はプログラミングに不慣れで、CLIではなくWAMPを使用しています。

また、制限を0から開始するか1から開始するかわかりませんか?

4

3 に答える 3

0

私の息子(このあたりにいますが、彼のユーザー名はわかりません)は、今日私のためにこれを解決したいと考え、次の解決策を提供しました。

//メインの結果セットを取得します$result= mysql_query( "SELECT * FROM Budget_table ORDER BY Percentage DESC LIMIT 0,100");

//結果セットのIDの配列を作成します$ids= array(); $ rows = mysql_num_rows($ result);

//各行のIDを取得し、IDに追加します

for($ i = 0; $ i <$ rows; $ i ++)$ ids [] = mysql_result($ result、$ i、 "id");

// IDを文字列に結合してIN()で使用します

$ ids_str = implode( "、"、$ ids);

//上記の結果セットのIDのみの合計を取得します

$ result2 = mysql_query( "SELECT SUM(billion)、SUM(Percentage)、SUM(PIT)、SUM(TOS)、SUM(Actual_PIT)、SUM(Actual_TOS)FROMbudget_table WHERE id IN($ ids_str)");

于 2012-11-06T09:05:35.937 に答える
0
GROUP BY 'sum(Billion)'

これは、Billion 列の個別の値ごとにグループ化されるわけではありません。これは、定数文字列リテラルという単一の値でグループ化されます'sum(Billion)'。グループ化式として定数文字列リテラルを使用すると、すべての行が同じ値を持つため、1 つのグループが得られます。

GROUP BY 列に式を入れるときは、引用符を外してください。

とにかく、これはグループ化の有効な式ではないことがわかります。

于 2012-11-03T00:19:21.977 に答える
0

SUM()演算子は、集計演算子のGROUP BYように式で使用できないため、式内では意味がありません。SUM()GROUP BY

idしたがって、 には 、またはその他のフィールドを使用する必要がありますGROUP BY

(offset パラメーター)の 2 番目のパラメーターLIMITは、1 ではなく 0 から始まります。

于 2012-11-02T23:30:28.677 に答える