nora1962 の回答履歴
- postgre 8.3のアンインストールについて
お世話になります。 PostgreSqlのインストールについて、嵌っています。 以前、PostgreSqlの8.3をインストールしていて、今回、新たに PostgreSqlの8.3をアンインストールして、同一バージョン(8.3)の インストールをしました。 インストールはうまくいくのですが、インストール時に設定した ユーザー名、とパスワードでPgAdminからデータベースにアクセス するとユーザーIDとパスワードが異なっているといった旨のエラー が出力されてしまいます。 アンインストール時の手順は以下の通りです。 (1)コンパネからプログラムの削除→postgresSql8.3を削除 (2)C:\Program Files\PostgreSQLを削除 (3)DOSからコマンドで、net user postgres /deleteを実行 上記の手順で、アンインストールを行い、postgresqlを再度インストール しているのですが、何度やってもうまくいきません。 以前、インストールした際は、問題なく出来たのですが、何が問題なのでしょうか? どなたか、お助け願えませんでしょうか?
- ベストアンサー
- PostgreSQL
- tiyojisaka
- 回答数1
- 検索の効率に付いて
フロントエンドをAccessのADPにて作成しようとしています。 少しスッキリしないので確認をさせて下さい。 AccessのVBAやフォームのソースに書くSELECTですが SELECTであれば全てサーバー側で絞り込んで結果だけが帰って来るのか from句で指定したテーブル全件が送られて来てクライアント側で 絞り込みされるのかどちらでしょうか? 回線スピードが遅いのでネットワークに流れるデータ量を抑えたいと 考えています。 私の頭の中では・・・ FROM [テーブル名] の場合はクライアント側 FROM dbo.[テーブル名] の場合はサバー側 要はAccessの「テーブル」と「クエリ」に表示されているオブジェクトを 指定するとクライアント側(全件→クライアントで絞り込み=データ量多)、 「dbo.」を付けるとサーバー側(絞り込み後のデータ→クライアント=データ量少) と考えています。
- ベストアンサー
- SQL Server
- SEsyo
- 回答数2
- auto_incrementフィールドの書込み内容を知る方法
auto_incrementの属性を持つフィールド(以後、id)を含むテーブルへ、書込みを行った場合、idフィールドには空番号が自動で付与されて書き込まれると思いますが、書き込まれた番号を効率的に知る方法はありますでしょうか。 例:id(auto_increment)、data1(char)のテーブルに対して、 data1に『AAA』をinsertした直後に、自動で付与されたid値を知りたい。 データをinsertした直後に最老番を調べる方法では、データのinsertが多数して行われた場合に、値がずれる恐れがあります。 宜しくお願い致します。
- Perlでexecuteをまとめて実行したい
以前似たような質問をしたモノですが、 Perl(cgi)ファイルからテーブル内の一定の項目をDELETEしようとしています 具体的にいうと、多数あるチェックボックスにチェックされた項目のみを削除するプログラムで、チェックされた値はハッシュに格納し読み込み、削除をしています。 foreach $key (keys %hash) { # 取り出した値を$noに代入 $no = $hash{$key}; # SQL発行 $sql = $db->prepare("DELETE FROM テーブル名 WHERE レコード指定名='$no'"); # SQL実行 $sql->execute; } もしくは # ハッシュに入れた値をカウント $n = keys( %hash ); # プレースホルダを使用し削除の実行 $sql = $db->prepare("DELETE FROM テーブル名 WHERE レコード指定名=?"); for($i=0; $i<$n; $i++) { # SQL実行 $sql->execute(@hash{$i}); } 上記の方法でどちらも問題なく実行できているのですが、ご覧のようにハッシュに格納されている数だけ$sql->execute;を実行しているため効率が悪い、と担当者から指摘をうけました。 少しでもマシンの負担を軽くし、スムーズにするためにexecuteをまとめて実行することを求められています。 selectcol_arrayref などを使う方法などを検索できたのですが、具体的なサンプルがないとまだ分からない初心者で、上記のプログラムに当てはめる方法が分からないでいます。 ご教授のほどよろしくお願いします。
- ベストアンサー
- MySQL
- k_keep2007
- 回答数3
- SUBSTRING 関数に渡した長さのパラメータが無効です。
●サーバー機 DB:SQLServer2005 OS:WindowsServer2003 ●クライアント機 OS:WindowsXP SP3 住所テーブル(ADDRESS)の項目のひとつである電話番号(TELNO)を 特定の記号で3つの別項目として取得したいのですが クライアント機の SQL Server Management Studio にてクエリを実行すると 「SUBSTRING 関数に渡した長さのパラメータが無効です。」 以上のようなエラーが発生します。 電話番号の項目は文字型の項目で、実際のデータとしては 例:(01)2345-6789 (0123)45-6789 (01234)5-6789 こんな感じで市外局番の前後に必ず"(" ")"が付いており"-"も必ず付いた状態です。 ただし、市外局番、ハイフンの前後の番号の桁数に決まりはありません。 ※市外局番5桁、ハイフン前4桁、ハイフン後4桁という最大桁数の制限はあり。 【実行したクエリ】 Select SUBSTRING(TELNO, CHARINDEX('(',TELNO)+1, CHARINDEX(')',TELNO)-CHARINDEX('(',TELNO)-1) AS TELNO1 , SUBSTRING(TELNO, CHARINDEX(')',TELNO)+1, CHARINDEX('-',TELNO)-CHARINDEX(')',TELNO)-1) AS TELNO2 , SUBSTRING(TELNO, CHARINDEX('-',TELNO)+1, 5) AS TELNO3 From ADDRESS エラーメッセージの通り、SUBSTRING関数のパラメータの内容が長すぎるのが原因のようですが いろいろ調べてみたのですが別の書き方が見つけられず困っている状態です。 何かいい方法はないものでしょうか?(別の関数を使用する等々) ※ストアドプロシージャで処理するのではなく1本のクエリで結果が得られるのが望ましいです。 よろしくお願いいたします。
- ベストアンサー
- SQL Server
- Elldorado
- 回答数3
- 生年月日計算について
テーブル(A) テーブル(B) ID --- 111 ID ---111 生年月日 --- 2007/02/18 日付 --2008/10/3 テーブル(A)には、ID、生年月日があります。 テーブル(B)には、ID、日付があります。 テーブル(A)の生年月日とテーブル(B)の日付を計算し 表示したいと考えていますが、うまく行きません…。 やりたい事としては、テーブル(B)の値とテーブル(A)の値を計算し 2008 - 2007 = 1なので1才と表示し、 10 - 02 = 8なので、8ヶ月と表示したいと考えています。 やり方として一番どのようなやり方が キレイなSQLを書けるのでしょうか? 一応http://ayuayuayu01.seesaa.net/article/106439889.htmlを参考にして やるか、またはSUBSTRで行う方法をイメージしています。 出来れば1回で実行したいので、SUBSTRは向いていないのかなぁっと思っています。
- PL/pgSQLの使い方
PL/pgSQLについて質問させてください。 以下のような2つのテーブルAとBがあります。 テーブルA: aid | fall0 | fall1 -----+-------+------- 001 | 0 | 0 002 | 0 | 0 テーブルB: bid | aid | fall --------+-----+------ 000001 | 001 | 0 000002 | 001 | 0 000003 | 002 | 0 000004 | 002 | 0 テーブルAとテーブルBの関係は1:nの関係です。 以下のような2つのことがやりたいです。 テーブルAのfall0,fall1,テーブルBのfallはフラグです。 今、テーブルBのaid=001であるすべての行のfallを0から1に変えたとき、 それに対応するテーブルAの行のfall1が0から1にかわる。またテーブルBのaid=001である少なくとも一つの行のfallを0から1に変えたとき、 それに対応するテーブルAの行のfall0が0から1にかわるようなプログラムを作りたいのですが、なかなかうまくいきません。今aid=001のときをやりましたが、aidは任意のときを想定しています。もし、ご存知の方がいらっしゃいましたら教えていただけないでしょうか? よろしくお願いいたします。以下は自分が書いたプログラムです。 drop table b; drop table a; create table A ( aid text primary key, fall0 integer, fall1 integer ); create table B ( bid text primary key, aid text not null references A(aid), fall integer ); insert into A values ('001',0,0); insert into A values ('002',0,0); insert into A values ('003',0,0); insert into B values ('000001','001',0); insert into B values ('000002','001',0); insert into B values ('000003','002',0); insert into B values ('000004','002',0); /* 関数の定義 */ create function tri_test() returns trigger as ' begin declare aid_rec if old.fall=0 and new.fall=1 then update a set fall1=1 where a.aid = select b.aid from b where b.fall = 1); end if; return new; end; ' language 'plpgsql'; /* トリガーの定義 */ create trigger tri_b after update or insert on b for each row execute procedure tri_test(); /* B テーブルへのデータ操作 */ update b set fall=1 where aid='001';
- ベストアンサー
- PostgreSQL
- ken6791
- 回答数1
- 複数行の結果を単一列に連結
以下のような【TABLE1】と【TABLE2】をID_SUBの列で結合した結果を 【A.結果】のように取得したいのですがうまくいきません。 【TABLE1】 ID ID_SUB 1 A1 2 B1 【TABLE2】 ID ID_SUB ID_SUB_CODE 1 A1 AAA1 2 A1 AAA2 3 B1 BBB1 4 B1 BBB2 【A.結果】 ID_SUB ID_SUB_CODE A1 "AAA1,AAA2" B1 "BBB1,BBB2" いろいろ調べたのですが、MySQLにはGROUP_CONCATの 関数を使うと簡単に出来るみたいですが、PostgreSQLには 似たような関数がなく、ARRAYが使えるかな?と思ってためしてみましたが array_to_string(ARRAY(ID_SUB_CODE, ',')) 等のような感じで試した結果、ID_SUB_CODEが 全て連結されるような使い方しか出来ませんでした。 A1 "AAA1,AAA2,BBB1,BBB2" B1 "AAA1,AAA2,BBB1,BBB2" 何か良い方法はありますでしょうか?
- ベストアンサー
- PostgreSQL
- karin16jp
- 回答数1
- トランザクションとlast_insert_id
トランザクション中にinsertする予定のテーブル(未コミット)のauto_increment値を取得することはできるのでしょうか。 以下のような処理を期待しているのですが、hoge1テーブルのauto_increment値が取得できずに困っております。last_insert_id に関わらず、hoge1テーブルのauto_increment値が取得できる方法があれば教えてください。 (1) トランザクション開始 (2) $sql=" INSERT INTO hoge1(name) value('あああ'); "; (3) ( ロールバック ) (4) $key=mysql_insert_id(); (5) $sql2=" INSERT INTO hoge2(hoge1_primary,age) value($key,'20歳'); "; (6) ( ロールバック ) (7) コミット (8) トランザクション終了 よろしくお願いします。 環境: php5,mysql5 (InnoDB)
- Perl(cgi)ファイルからMySqlで管理しているデータベース制御に関して質問
Perl(cgi)ファイルからテーブル内の一定の項目をDELETEしようとしています ランダムに選択させる値をハッシュに格納し読み込み、削除を試みています。 foreach $key (keys %hash) { # 取り出した値を$noに代入 $no = $hash{$key}; # SQL発行 $sql = $db->prepare("DELETE FROM テーブル名 WHERE レコード指定名='$no'"); # SQL実行 $sql->execute; } 上記の方法で問題なく実行できているのですが、ご覧のようにハッシュに格納されている数だけSPQを実行しているため効率が悪い、と 担当者から指摘をうけました。 PHPであればSPQの実行あと、for文で『 レコード指定名='_no'』の部分だけをループさせることができたのですが Perlではうまくいきません。ご教授ください。よろしくお願いします。 ちなみにPerlをはじめとしてプログラムそのものを勉強し始めて1ヶ月の初心者です。
- ベストアンサー
- MySQL
- k_keep2007
- 回答数2
- SQLのカーソルについて
SQLのカーソルについて質問があります。 OPEN CURSOR1; LOOP OPEN CURSOLR2; LOOP ・・・・ END LOOP; CLOSE CURSOR2; END LOOP; CLOSE CURSOR1; みたいな構文は可能ですか??? また2008というNUMBER型の数字と、4というNUMBER型数字を年月と認識させるために、TO_DATE(2008*100+4,'YYYYMM')→DATE型の200804と認識できる?? ということについて教えてください。
- ベストアンサー
- Oracle
- haveagolde
- 回答数2
- SQLのカーソルについて
SQLのカーソルについて質問があります。 OPEN CURSOR1; LOOP OPEN CURSOLR2; LOOP ・・・・ END LOOP; CLOSE CURSOR2; END LOOP; CLOSE CURSOR1; みたいな構文は可能ですか??? また2008というNUMBER型の数字と、4というNUMBER型数字を年月と認識させるために、TO_DATE(2008*100+4,'YYYYMM')→DATE型の200804と認識できる?? ということについて教えてください。
- ベストアンサー
- Oracle
- haveagolde
- 回答数2
- SELECT文について
PostgreSQL8.3にて、 |ID|担当者| 年月 |金額| | 1|太 郎|200807| 500| | 2|次 郎|200807|1000| | 3|次 郎|200807| 500| | 3|太 郎|200808|1000| | 4|次 郎|200808|1100| | 5|三 郎|200808| 900| | 6|太 郎|200809|1100| | 7|三 郎|200809|1200| というテーブルから、 | 年月 |太郎|次郎|三郎| |200807| 500|1500| 0| |200808|1000|1100| 900| |200809|1100| 0|1200| このようにすることは可能なのでしょうか。 どうかよろしくお願いします。
- ベストアンサー
- PostgreSQL
- revachin
- 回答数1
- GROUP BYを使って書けますでしょうか?
以下のような為替レートのテーブル(kawase)があるとします。 ※値は適当です。 date | cur | rate 2008-08-30 | USD | 110.36 2008-09-05 | USD | 178.34 2008-09-25 | USD | 100.45 2008-10-05 | USD | 96.54 2008-08-13 | EUR | 180.10 2008-09-08 | EUR | 200.54 2008-09-09 | EUR | 200.42 2008-10-11 | EUR | 160.31 2008-08-20 | GBP | 170.00 2008-09-10 | GBP | 181.45 2008-09-18 | GBP | 192.33 2008-09-24 | GBP | 195.02 米ドル(USD)の最新情報を取得するには、 以下のSQLでよいと思います。 SELECT * FROM kawase WHERE cur = 'USD' ORDER BY date DESC LIMIT 1; では、以下のように、全ての通貨の「最新情報」を 取得するには、どうすればよいでしょうか? date | cur | rate 2008-10-05 | USD | 96.54 2008-10-11 | EUR | 160.31 2008-09-24 | GBP | 195.02 GROUP BYでできますでしょうか? ※UNIONを使えばできましたが、通貨の種類が多数あるので、 SQLの行数が増えてしまいました。
- 急募「セレクトしてセレクト」
教えてください SELECT stayday,roomtype ,sum(roomnum) AS sumroom from details WHERE stayday >= '20080921' and stayday <= '20080927' GROUP BY stayday,roomtype ; 結果 +----------+----------+---------+ | stayday | roomtype | sumroom | +----------+----------+---------+ | 20080921 | SD | 22 | | 20080921 | SS | 22 | | 20080922 | SD | 15 | | 20080922 | SS | 15 | | 20080922 | TS | 15 | | 20080923 | SD | 15 | | 20080923 | SS | 15 | | 20080923 | TS | 15 | +----------+----------+---------+ ここからSD、SSのsumroomの最大値をとってこれるようなSQLは作れますか? +----------+----------+---------+ | stayday | roomtype | sumroom | +----------+----------+---------+ | 20080921 | SD | 22 | | 20080921 | SS | 22 | --------------------------------- 最終的に↑のようにしたいのです。 しかしわたしには一番上のSQLをつくるので限界です 誰か助けてください。 どうか教えてください
- ベストアンサー
- SQL Server
- bankensan
- 回答数3
- postgre ⇒ mysql にした場合のSELECT文の作り方
理由があって既存DBをpostgreからmysqlにすることになりました。 mysqlではto_charが使えないとのことで、DateFormatに差し替えてみましたが以下の部分が正常に動作しません。 どこがおかしいのかわかる方教えてください。 ■postgre $R = mysql_query("select *,to_char(ymd1,'YYYY/FMMM/FMDD') as ymd, to_char(ymd1,'HH24:MI') as time1, to_char(ymd2,'HH24:MI') as time2 from sch_table where ymd1 between '$b_ymd' and '$e_ymd' order by time1"); ■mysql $R = mysql_query("select DATE_FORMAT(date,'%Y/%c/%e') as ymd, DATE_FORMAT(ymd1,'%H:%i') as time1, DATE_FORMAT(ymd2,'%H:%i') as time2 from sch_table where ymd1 between '$b_ymd' and '$e_ymd' order by time1");
- ♪Oracle SQL 処理が成功した時のみコミットする方法
初歩的質問で申し訳ないのですがご教授下さい。 ※1のような、複数行のSQL文を一括実行し、全てのレコードがエラー発生無い場合のみコミット処理をして、 1行でもエラーがある場合全てをロールバックしたいのですが。 どのようにすれば良いのでしょうか。。 ■DB Oracle9i Enterprise Edition Release 9.2.0.1.0 ※1 INSERT INTO TT_売上明細( 売上番号, 明細番号, 商品コード, 売上数量) VALUES( 6, 4, 1, 1); INSERT INTO TT_売上明細( 売上番号, 明細番号, 商品コード, 売上数量) VALUES( 7, 4, 2, 2); INSERT INTO TT_売上明細( 売上番号, 明細番号, 商品コード, 売上数量) VALUES( 8, 4, 3, 3);
- Accessの文字の置換のクエリについて
Accessについて教えて下さい。 SQLデータベースをODBCを使用して、Accessにてリンクしています。 テーブルのあるフィールドに顧客名が並んでいます。 頭の一文字を○に置換するには、どのようなクエリを組めばいいのでしょうか? 山田 太郎⇒○田 太郎 田中 一郎⇒○中 一郎 佐藤 花子⇒○藤 花子 また、間にスペースが入っている後の文字(名)の置換の方法も教えて下さい。
- 締切済み
- その他(データベース)
- makoto_44
- 回答数1
- updateで複数行更新したい
OracleのSQLについて質問があります。 UPDATE文を1度しか使わずに、抽出条件の異なるデータを複数個更新することは可能ですが? 例えば、 テーブル名:TEST カラム: A B C D UPDATE A B C D 100 010 350 300 → 100 010 200 250 100 020 350 000 → 100 020 200 280 という感じで更新したいのですが、どんなUPDATE文を組み立てればいいのか思いつきません。 なので、何かきっかけになるようなことでも構いませんので、教えてください。 よろしくお願いします。
- ソート方法が分からない
アクセスログをユーザーエージェント別に集計し、 その際に、あるIPアドレスだけを除いたアクセス数でソートしたいのですが、方法がわかりません。(1レコード1アクセスです) 下記の様に、やってみたのですが、やはり「COUNT(`ip`="210.153.84.1")」の部分が上手く行きません。 SELECT `user_agent`, COUNT(*) FROM `access_log` GROUP BY `user_agent` ORDER BY COUNT(*) - COUNT(`ip`="210.153.84.1"); ご教授よろしくお願い致します。
- ベストアンサー
- MySQL
- takatokoko
- 回答数3