• 締切済み

select max~の値の取得方法

select Max(x) from table where y=1 基本的なことかもしれませんが、上のようなクエリを実行したときの値の取得の仕方を教えてください。 単純に query="select Max(x) from table where y=1" a=Execute query としたら「ステートメントの末尾が不正です。」というエラーが出ました。

みんなの回答

  • LegaC2
  • ベストアンサー率52% (224/428)
回答No.2

通常、Executeは、UpdateとかDeleteとか、テーブルを更新する場合に使用します。 Selectなどで結果を受け取りたいときは、レコードセットに入れる必要があります。 判りづらくても、レコードセットを使用しましょう。

shaka001
質問者

お礼

以前PHPを少しやったことがあったので、Executeを使ったほうが似た感じでしっくりきてたんですよね。 でも、仕方ないですね。

shaka001
質問者

補足

上のような場合、recordsetを使うとどのように書くのでしょうか? もしよければ、コードを書いていただけると助かります。

noname#259269
noname#259269
回答No.1

んー、これ本当に ASP のサーバ側にこういうコーディング書いているんでしょうか? もしそうなら詳細なコーディングをお願いします。 データプロバイダは何を使っていますか? Execute? OpenRecordset ではなく?

shaka001
質問者

補足

Dim objCon Dim strSQL Set objCon = Server.CreateObject("ADODB.Connection") objCon.ConnectionString = "Provider=SQLOLEDB;" & _ "User ID=ユーザー名;" & _ "Password=パスワード;" & _ "Data Source=サーバーのIPアドレス;" & _ "Initial Catalog=DB名" objCon.Open query="select Max(x) from テーブル名 where y=1" objCon.Execute query 確かこんな感じだったと思います。今は手元にソースが無いのではっきりしないのですが。 recordsetはいまいち分かりづらかったのでExecuteを使っています。

関連するQ&A

  • MAX値が取得できない

    次のような形でMySQLデータベースからデータを取得するように組んでいます mainテーブルのkeyフィールド(INT型)の最大値を取得したいと思っています。 function getResult($query){ $result[result]=mysql_query($query,$this->connect); $result[count]=@mysql_num_rows($result[result]); return $result; } function getSelect($field,$table,$where){ $query="select $field from $table $where;"; $result=$this->getResult($query); return $result; } これが別ファイルにあり、もちろん先に読み込ませ、データベースには接続した状態で、 $results=$db->getSelect("max(key)","main",""); $rows=mysql_fetch_array($results[result]); を実行したのですが、 mysql_fetch_array(): supplied argument is not a valid MySQL のエラーとなり、 'max(key)'とすると 最大値が取得できずそのままmax(key)という文字列が返るだけ max'(key)'とすると mysql_fetch_array(): supplied argument is not a valid MySQL のエラーがでます。 MAXなど大文字に変えても同じ結果です。 maxやavgは今回初めて使ってうまくいかないのですが、今までこの構文で通常のselect * fromとかorder by、limitなど他のものは何の問題もなく動きます。 どこをどうかえてやればMAXを取得できるでしょうか。

    • ベストアンサー
    • PHP
  • SELECTした値との比較

    SELECT (`総額` / `個数`) FROM tb_item で`総額`を`個数`で割った単価(のような)値が取得できるものとします。 このとき、この「計算で出た単価」と「10,000という値」を比較して大きいほうの値を返すクエリはどのように書くのでしょうか? なんとなく、 SELECT MAX(`総額` / `個数`, 10000) FROM tb_item のような感じで取得できるような関数を探していますが、MAXだと列の中で最大値を取得してしまうので渡しが使いたい内容と違います。 サブクエリを使わずになるべく簡潔に書く方法を知りたいです。 どうぞよろしくお願い致します。

    • ベストアンサー
    • MySQL
  • PEAR::DBで取得したデータで処理を分岐したい

    DB関連が苦手な上、動作がうまくいかず、アドバイスをいただければと存じます。現在PHP4、MYSQL4.1.20を使用しております。 行いたい処理は、 PEAR::DBで実行したクエリ SELECT MAX(id) FROM table WHERE `name` = '$test'; 等で、whereで一致する行を絞込み、そのうちの最大値のIDを取得 (クエリの動作は、MYSQL単体で行った場合問題なしで、idの値を取得) その後MAX()で取得した1つIDを、$resultに代入したいのですが、どの様に行えばよいのかわかりません。 今までfetchRow()で事足りていたことで、他の関数がわかりません>< $result=$DB->getOne("SELECT MAX(id) FROM table WHERE `name` = '$test';"); といった感じで取得するのが良いのかも知れませんが、うまく取得できずに詰まっておりますorz 解決法、アイデア等ございましたら、お伺いできればと存じます。 上記ソースは、質問させていただく上で、新規に書いたソースですので、カラム名、変数は仮のものです。不明な情報等ございましたら、捕捉させていただきたいと存じます。

    • 締切済み
    • PHP
  • SQL 取得した値について

    力を貸してください。 教えてください。 (1)SELECT 項目1 FROM 表 (2)SELECT 項目2 FROM 表2   WHERE = A <> 「(1)で取得した項目1」 ※(1)で取得した値を(2)のWHERE句の条件で使用したいのですが、 どの方法であればよろしいでしょうか? 回答の方をお願いします。

  • PDOのデータ取得方法について

    お世話になります。 以前まで「mysql_query」でSQLを実行していたのをPDOで行うように変更しております。 prepareの「?」の部分までのSQLにした場合(1)、データ取得出来ますが (2)ですとエラーも返ってこなくデータ取得出来ません。 色々と試してはいますが、全く出来なくて大変困っています。どうかご教示くださいませ。 1)SELECT * FROM table WHERE data_code = ? and data_code2 = ? 2)SELECT * FROM table WHERE data_code = ? and data_code2 = ? and (data_code3 = "null" or data_code3 is null or data_code3 = "") ※PHP5.3、MySQL5.0です。

    • 締切済み
    • PHP
  • 【PHP】PDOでのMysqlから値を取り出す時に

    現在phpを勉強しております。 PDOオブジェクトを生成し、 prepareメソッドでMySQLで実行するクエリをセットして executeメソッドで実行する。 というのを以下のようにしております $pdo= new PDO($dsn, $user, $password); $query = "SELECT * FROM table_name"; $stmt = $pdo->prepare(); $stmt->execute; で、この場合でも正常に動くのですが MySQL内のテーブルに「?」が含まれる場合だと $query = "SELECT * FROM table_name?test"; $stmt = $pdo->prepare(); $stmt->execute; とすると$queryの「?」をバインド変数とみなしてしまい エラーで「?の数とバインド先の変数の数を合わせろ」と出てしまいます。 ですので、「?」をエスケープしようと思い $query = "SELECT * FROM table_name\?test"; としたのですが、結局エスケープされず 同じエラーが出てしまいました。 エスケープできるならエスケープの方法か ?をバインド変数としてみなさない方法か または他の解決方法かを よろしければご教授願います。

    • ベストアンサー
    • PHP
  • phpからsqliteにselect抽出

    phpからsqliteにselect抽出しています。 $sql = "select * from Table where C=?" $st = $db->prepare($sql); $st->bindParam(1, $key, PDO::PARAM_STR); $st->execute(); while ($row = $st->fetch(PDO::FETCH_ASSOC)) { *** *** } でエラーにはなりませんが、データがとれません。 updateやinsertで?(インジェクション)はうまくいくのですが、Selectでなぜ取得できないのでしょうか? bindParamをarrayにしたりprepare をqueryにしたりしましたが、 データが1件しか取れなかったりします。

    • ベストアンサー
    • PHP
  • 2つの情報を1つのSQLで取得する方法について

    お世話になります。 SQL文で、下記内容のデータを取得する方法がわかりません。 ・TESTテーブルからA、B、Cの3項目のデータを取得する。 ・但し、この中のC項目については、WHERE句の条件を満たす データの最大値を取得する。 ・項目AおよびBの取得条件は、項目Cと同一条件とする。 ・目的は、項目AおよびBに関しては、WHERE句の条件を満たす  全てのレコードを取得し、項目Cにおいては最大値のみ取得したい。 上記内容を取得しようと考えた場合、 現時点で下記のSQL文を作成して実行しましたが、 うまくデータが取得できません。 SELECT A, B, C FROM TEST WHERE C = (SELECT MAX(C) FROM TEST) AND Z = 'xxxxx' AND Y = 'x' AND X = 'Y' ※項目X, Y, ZはTESTテーブルのカラムです ※上記SQLを、A、Bのみ取得用とCのみ取得用に   それぞれ分解して実行すると、それぞれの結果は   正常に取得できます。 2つの結果を1つのSQLで取得することは可能でしょうか? どなたかご教授願えますか?よろしくお願いいたします。

  • SELECT文の二段重ね

    次のSQL文を実行します。 create table1 (id, english) insert table1 (1,"foo") insert table1 (2,"bar") create table2 (id, japanese) insert table2 (1, "ふー") insert table2 (2, "ばー") SQL文法としては誤ってますが、成功したとします。 いま、select id from table1 where english = 'foo'; で1が得られます。 いま、select japanese from table2 where id = 1; で"ふー"が得られます。 これを一つのSQLite3のselect文で実現できないでしょうか。 select japanese from table2 where id = (select id from table1 where english = 'foo'); で良いですか? カテゴリ選択にSQLiteが無いのは、人気が無いからですかね。

  • TIMESTAMPTZの値について

    こんにちは。 PostgreSQL+PerlでCGIを書いています。 テーブルのtimezonetz型の値の最大値を取り出して加工したいのですが、 うまくいかず悩んでおります。 単に最大値を取り出すだけなら、 SELECT max(lastdate) FROM table; でできました。しかし、この値を $sth->execute(); $last=$sth->fetchrow; として取り出しても、文字列となってしまいます。 perl側で加工するのは、フォーマットが環境によって違ったりする心配がありましたので、サーバー側でできないものかと思い、 SELECT EXTRACT(EPOS FROM TIMESTAMPTZ lastdate) FROM table; としてみましたが、 「"max"またはその近辺で構文エラー」とメッセージが出てしまいます。 こういった場合、いったいどのように書けばよいのでしょうか? PostgreSQLのバージョンの確認方法がわからず、バージョンは不明なのですが、つい先日インストールしてもらったばかりなので、そう古いものではないと思います。 OSはunix(Solaris)です。よろしくお願いします。

専門家に質問してみよう