• ベストアンサー

コマンドラインで実行

DB2でコマンドラインから実行していますがうまくいきません。 select文で a   b ----------- 1   2 をテーブルが存在しない状態で出したいのですが db2 "select a,b from values(1,2) as table" としてもうまくいきません。 どのようにしたらいいでしょうか?

質問者が選んだベストアンサー

  • ベストアンサー
  • bin-chan
  • ベストアンサー率33% (1403/4213)
回答No.2

Oracleでいうところの[DUAL]に相当するものがあるはず。 (SYSIBMだったか?詳細はリファレンスを参照してください) select '1' as a, '2' as b from SYSIBM みたいな感じだったと思います。

その他の回答 (1)

回答No.1

DB2にそれ程、詳しくないですが、デタラメな構文になっているように思いますが? select 1 as a,2 as b from sysibm.sysdummy1 といった感じでは? sysibm.sysdummy1は、操作する表がない場合のダミーの表ですが、DB2ではDUALではないと思いました。sysibm.sysdummy1を指定するのが「DB2での一般的な使い方」かどうかは分かりませんが、そういった表が実装されているようです。

関連するQ&A

  • Accessでのテーブルのコピー

    はじめまして、よろしくおねがいします。 リンクテーブルのバックアップテーブルを作りたいのですが、 Accessで出来るでしょうか? Access2003にて、 「Create table TABLE_A as select * from TABLE_B;」 のクエリを実行しようとすると、 「CREATE TABLEステートメントの構文エラーです」 とエラーが出ます。 TABLE_Bテーブルは、他のDBからのリンクテーブルです。

  • コマンドライン実行でDBにアクセスできない

    PHPで FirebirdのDBにアクセスするために、以下のようなスクリプトを作成しました。  $host = 'localhost:D:\testDB\test3.fdb';  $username = 'SYSDBA';  $password = 'masterkey';  $dbh = ibase_connect($host, $username, $password);  $stmt = 'SELECT * FROM test_table';  $sth = ibase_query($dbh, $stmt);       : これをWEBサーバで動作させるとうまくいくのですが、コマンドラインから実行すると以下メッセージが出てDBに接続することができません。 (ibase_connect関数のもどりで null が戻ってきています) Warning: ibase_connect(): Unable to complete network request to host "localhost". Failed to locte host machine. Undefined service gds_db/tcp. DBの指定でlocalhostをIPアドレス直接入力したり、DBファイルのパスのみの指定にして試してみたのですが、やはりブラウザではOK、コマンドラインでは駄目でした。 又、PDOを使ってアクセスしてみても、コマンドラインから実行した場合は駄目でした。 コマンドラインからDBアクセスできるように、何か必要な設定などがあるのでしょうか。  環境   PHP:5.2.4   DB:Firebird2.0.3   WEBサーバ:Apache2.2.4   OS:Windows2000 よろしくお願いします。

    • 締切済み
    • PHP
  • 円マークのフィールドに対してSELECT文が実行できない

    いつも参考にさせていただいております。 DB2(AS400)に対してJDBC経由で、円マーク(\)をんだフィールドに対してSELECT文を実行しようとすると、エラーになってしまいます。 フィールドの前にもう一つ円マークを付加して、フィールド名をダブルコーテーションでくくってみたのですが、テーブルには該当するフィールドがないというエラーになってしまいます。 以下のようなJavaのコードになります。 String sqlStr = "SELECT " + "\"" + "\\COL1" + "\"" + " FROM TABLE1"; 上記からは以下のSQLが作成されます。 SELECT "\COL1" FROM TABLE1 このSQL文を、DB2のツールで実行すると問題なく処理されて、値が返ってきます。 Java(JDBC経由)の場合は、どのように記述したら宜しいのでしょうか? 宜しくお願い致します。

  • Select文で結合した時に、重複カラムが存在するのでテーブル名を先頭

    Select文で結合した時に、重複カラムが存在するのでテーブル名を先頭か末尾に自動でカラム名に付与して表示したいのですが、いい方法はないでしょうか? (asで1個1個変えるのではなく・・・) SELECT TABLE_A.*,TABLE_B.* FROM TABLE_A LEFT JOIN TABLE_B ON TABLE_B.ID = TABLE_A.ID 表示 : TABLE_A_ID | TABLE_B_ID みたいのを考えています。

    • ベストアンサー
    • MySQL
  • VB.NETでDataTableにデータ追加したい

    VisualStugio.Net2003でソースコードを記述しており、コード内でSQLのSELECT文を実行して、実行結果をDataTableに格納する処理をしています。 今回、とあるテーブルに対し2パターンのSQLを実行し、それぞれの実行結果を1つのDataTableに格納したいのですが、どのようにすれば良いでしょうか? 自分で調べたところ、先に実行したSQL結果に、後から実行したSQL結果を1行ずつ追加するといった方法は見つかりましたが、1行ずつではなく、一括で追加する方法が知りたいです。 前提として、2回のSQL実行では、同じテーブルの同じ項目をSELECTしております。 下記に簡単ですがコード記述の概要を補足しておきます。 ・コード記述概要 【変数宣言】 Dim DB1 As DataTable Dim DB2 As DataTable 【SQL文1】 SELECT A,B,C FROM テーブル1 WHERE 条件文1 DB1 = SQL文1の実行結果 【SQL文2】 SELECT A,B,C FROM テーブル1 WHERE 条件文2 DB2 = SQL文2の実行結果 【DB1にDB2のデータを追加】←ここのやり方を知りたいです DB1 = DB1 + DB2 よろしくお願いいたします。

  • joinの場合のテーブル名の別名の使用方法

    select * from table1 a,table2 b where a.field1=b.field1; とできますが select * from table1 as a left join table2 as b on a.field1=b.field1; とできません。 joinの場合にテーブル名の別名を使う方法を教えてください

  • mysqlコマンドでSQL文が実行できません

    いつもお世話になっております。 いつも調べてはいるのですが、わからず困っております。 mysqlコマンドで-eを付けて、次のようにコマンドプロンプトでクエリを実行します。 mysql db1 -u root -p**** -e 'SELECT * FROM tb1' すると失敗するのですが、シングルクォーテーションをダブルクォーテーションにすると実行できます。 mysql db1 -u root -p**** -e "SELECT * FROM tb1" コマンドプロンプトでは" "にしなければいけないのでしょうか。 どなたかヒントでもけっこうですので、お教えいただけないでしょうか。 どうか、よろしくお願いいたします。

    • ベストアンサー
    • MySQL
  • INSERT文でフィールドの1つだけを他のテーブルから取ってきた値を入れたい

    挿入するフィールドの内1つだけを他のテーブルから取ってきた値を使いたいのですが、 insert into table1 (field1, field2, field3) values('a', (select field2 from table2 where field4='xxx'), 'b'); Oracleだと↑の書き方でいけるのですが、PostgreSQL(6.5.3)だとエラーになってしまいます。 2回もDBにアクセスしにいくのはいやなので、1文で書きたいです。上記以外で他の書き方をご存知でしたら教えてください。よろしくお願いします。

  • レコードのコピーについて

    PostgreSQLで質問があります。 table_Aの内容をtable_Bにコピーしたいと考えています。 create table table_B as select * from table_A; だと、table_Aのフィールドでserial型を使用しているため、 integerになってしまいます。 できれば上記以外でかつ、table_Bは既に作成されて いる状態でコピーを行いたいと考えています。 insert into table_b as select * from table_A; とかでできるんでしょうか? それとも他にいい案があるのでしょうか? 確認する環境がないのでわからないのですが、 どなたかご存知の方、お願い致します。

  • 複数行のクエリを、まとめて実行するには?mysqli_multi_query()?

    PHPとMySQLの環境です。 複数行のクエリを、まとめて送って取得したいと考えています。 ですが、今試行錯誤しているのですが、うまく行かない状態で、クエリをきちんと実行できません。 処理の流れとしては、 [DBにアクセス]→[2つのクエリの実行]→[データ取得]→[DBをクローズ] でいいのではないかと思ってやっているのですが、 2つのクエリを実行するのはなにやら無理なような記述もウェブ上で拝見しました。 その場合、同じDBの同じテーブル内の異なるデータを取得したいだけなのに、 わざわざ、一度DBにコネクトして、切断、そしてまたコネクトして、切断ということを繰り返さないとダメなのでしょうか。。? そもそも同一PHPファイル内で二度も接続、切断はすべきではないですか? ちなみに、 一つ目のクエリでは、テーブル(table_a)のレコード数をカウントしてPHP側で取得するという流れの処理です。 $query = "SELECT count(*) FROM `table_a`"; もう一つのクエリは、テーブル(table_a)の最新のレコードの、idカラムのidを取得するだけのものです。 $query = "SELECT arrayset FROM `table_a` ORDER BY id DESC LIMIT 1"; この処理を一度のクエリで入れ込むことは可能でしょうか。 それぞれ単独では実行できます。 PHPでこのような関数 mysqli_multi_query() を見つけて色々調べているのですが、 いまだに使用方法がきちんとつかめない状況です。 これで複数のクエリを送ることは可能でしょうか。 アドバイス宜しくお願いします。

    • ベストアンサー
    • MySQL