1 :
赤松 :
03/06/30 21:56 ID:HD3wGG5f 物凄い勢いで誰かがDBの質問に答えてくれるスッドレです
詳細は
>>2-10 あたり
データベース板じゃないの?
3 :
名無しさん@お腹いっぱい。 :03/06/30 21:57 ID:fFG3JCLs
海王が「北銀河」という表現を使っていますが 上下が無い3Dの空間で東西南北は存在するのですか?
糸冬了
ドラゴンボール板でしょ?
6 :
1 :03/06/30 21:58 ID:HD3wGG5f
7 :
名無しさん@お腹いっぱい。 :03/06/30 21:58 ID:lkUe0ZB5
どれがネタスレなんですか?
最強は誰ですか?
9 :
1 :03/06/30 21:59 ID:HD3wGG5f
チビブウと悟飯吸収ブウどっちがつおいんでつか?
ベジット>>悟飯吸収ブ>>ゴテンクス吸収ブウ>>覚醒悟飯>>ゴツブウ>>戦闘ブウ>>チビブウ==ガリブウ≧≧超3悟空>>デブブウ
ベジット>>悟飯吸収ブウ>>ゴテンクス吸収ブウ>>覚醒悟飯>>ゴツブウ>>戦闘ブウ>>チビブウ==ガリブウ≧≧超3悟空>>デブブウ>>超2ベジータ>>超2悟飯
ベジット>>悟飯吸収ブウ>>ゴテンクス吸収ブウ>>覚醒悟飯>>ゴツブウ>>戦闘ブウ>>チビブウ==ガリブウ≧≧超3悟空>>デブブウ超2悟空==Mベジータ>>超2ベジータ>>セル編超2悟飯>>セル>>ダーブラ>>ブウ編超2悟飯
ベジット>>悟飯吸収ブウ>>ゴテンクス吸収ブウ>>覚醒悟飯>>ゴツブウ>>戦闘ブウ>>チビブウ==ガリブウ≧≧超3悟空>>デブブウ>>超2悟空==Mベジータ>>超2ベジータ>>セル編超2悟飯>>セル>>ダーブラ>>ブウ編超2悟飯
ブウが大杉てワケワカラン。どれがどのブウだ。
gggggggggggggggggggggggggggg ggggggggggggggggggggggggggggggggggggggggggggggggggggg
21 :
名無しさん@お腹いっぱい。 :03/07/10 23:26 ID:h4EUGvLT
初心者の質問ですみません。 下の<<1>>と<<2>>どちらが性能は良いのでしょうか? <<1>> SELECT A.hoge1 A.hoge2 FROM TABLE_A A ,TABLE_BB WHERE A.key=B.key <<2>> SELECT A.hoge1 A.hoge2 FROM TABLE_A A WHERE EXISTS ( SELECT 'X' FROM TABLE_B B WHERE A.key=B.key )
2のほうが戦闘力高そうなので2
戦闘力5か…ゴミめ
あぼーん
あぼーん
あぼーん
あぼーん
あぼーん
あぼーん
あぼーん
あぼーん
あぼーん
あぼーん
あぼーん
あぼーん
あぼーん
あぼーん
あぼーん
あぼーん
あぼーん
あぼーん
あぼーん
あぼーん
あぼーん
あぼーん
あぼーん
あぼーん
あぼーん
49 :
山崎 渉 :03/07/15 11:22 ID:???
__∧_∧_ |( ^^ )| <寝るぽ(^^) |\⌒⌒⌒\ \ |⌒⌒⌒~| 山崎渉 ~ ̄ ̄ ̄ ̄
あぼーん
勢いねーな(笑 物質厨は初心者板にカエレ
あぼーん
53 :
山崎 渉 :03/08/15 23:10 ID:???
(⌒V⌒) │ ^ ^ │<これからも僕を応援して下さいね(^^)。 ⊂| |つ (_)(_) 山崎パン
54 :
名無しさん@お腹いっぱい。 :03/08/16 00:14 ID:6MNNNMJ7
Oracle8.1.7をWindowsXPにインストールする方法、どなたか知りませんか?
あぼーん
>>54 クライアントはインストールできる。Knowledgeベースに情報があったと思う。
インストーラもバグってるけど、9iのインストーラ使って8.1.7をインストールするという手もある。
サーバは9iでないと動かないよ。
DB2で、 list tablespaces show detail と入力するとテーブルスペース毎の詳細を見ることができますが、 テーブルごとに見る方法を知っている人はいますか? オラクルのようにExtents情報などを見たいのですが、方法がわかりません。
あぼーん
59 :
chage-rin :03/08/24 00:06 ID:UqIILxIl
はじめまして。 質問させて貰います。 SQLSever2000を使用してるのですが、ROLLBACKとか COMMITが出来ません。 使用しているものは、主にENTER PRISE MANAGERと クエリアナライザです。 例えば、ENTER PRISE MANAGERで書き換えたとき(SQLでUPDATEも含む)は 元に戻す方法はないのでしょうか? クエリアナライザも同じです。 つまり、直前のトランザクションのロールバック方法を知りたいのですが ご教授お願いします。 ORACLEとかだったら、クライアントマシンよりSQLPlusで繋げて COMMITを発行するまで、有効だったはずなんですが・・・。
あぼーん
61 :
名無しさん@お腹いっぱい。 :03/08/24 01:08 ID:d2gGE9UJ
おもいっきりの初心者が勉強するには、どんなものから行えばよいですか ?
>>61 >おもいっきりの初心者が勉強するには、どんなものから行えばよいですか ?
『どんなものから』の『もの』って何?
技術的な事だったらとりあえず
ttp://www.wakhok.ac.jp/DB/DB.html でも読んどけばいいし(読むだけだとダメだけど)
Access、FileMakerPro等アプリケーションの選択だったら
どの程度の時間をかけて、どの程度のレベルを目指すかにも寄るので答えにくい。
DBエンジニアを目指すならOracle、DB2でもDownLoadしておけばいい。
もう少し具体的に書かないと何も答え様が無い。OS等も書かないとダメよ〜
63 :
ぼるじょあ :03/08/24 17:21 ID:P3Wn4t+K
SIEBELっていうデータベースのソフトについて 日本語で分かりやすく操作方法とか書いてあるHPって 無いでしょうか。
64 :
やさしく :03/08/24 17:34 ID:Si7/CDDf
使用OS,CPU,メインメモリ,ビデオボード,サウンドボード, DirectXのバージョン などを調べたいんですが、どうすれば見れますか?
>>64 少しは自分で調べてから聞いてくれ。
しかも板違いだ
あぼーん
68 :
名無しさん@お腹いっぱい。 :03/08/24 18:47 ID:2Jj6RXDx
後学のためにおながいします. 列をCHARやVARCHARではなく NCHARやNVARCHARに設計しておいてよかった、と 思えるようなことって たとえばどんなときでしょうか? 単純にCHARやVARCHARの桁数をNCHARやらで想定する2倍にして おけば全く支障なし(=NCHAR,NVARCHAR役立たず)なんでしょうか?
69 :
名無しさん@お腹いっぱい。 :03/08/25 19:21 ID:Y58rQMOG
>>68 全部の文字が2バイトで記録されるため、
(1バイト、2バイトだの判定させなくてもいい
→文字数=バイト数/2でいいからね。)
内部的にも、外部的(自作関数等)にも、
文字列操作が高速になる。
70 :
名無しさん@お腹いっぱい。 :03/08/27 11:24 ID:BucCbpyi
まじめな質問があったけど、ここに書くのやめた 荒れすぎ プロ技にいきます
プ
72 :
名無しさん@お腹いっぱい。 :03/08/28 22:49 ID:LDOu9BEY
NT4.0+Oracle8.0.5なんですけど、今使用中の表領域サイズが5ギガを突破しますた。 ちょこちょこチューニングはしてるものの、エクスポートの時とかでかくて面倒 なんですけど、適正サイズみたいなのって存在するんですか? なんか、過去分データとかはどっかで退避すべきなんでしょうか。
73 :
名無しさん@お腹いっぱい。 :03/08/28 23:06 ID:HhunSEl0
オラクルで、インデックスまたはそのパーテーションが使用不可ですってエラーが出たとき、 元に戻すことってできますか? インデックスを張りなおさずに。
74 :
名無しさん@お腹いっぱい。 :03/08/29 01:17 ID:bYdaHFke
75 :
名無しさん@お腹いっぱい。 :03/08/29 08:52 ID:oh0dORj4
ORA-01502です。 サーバの設定をいじってたら、クライアントでSELECT文を流すとこのエラーが出るようになってしまいました。 インデックスを使用不可に設定したのが原因みたいですが、使用不可にした設定を元に戻す方法がわからなくて。 インデックスを張り直せば元には戻せるようですが、それだと時間がかかりすぎるので。
76 :
名無しさん@お腹いっぱい。 :03/08/29 17:00 ID:TJhdDtq/
MySQLで、大文字化はupper 小文字化はlowerですが、先頭の文字だけ 大文字/小文字にするにはどうしたらいいですか?
77 :
名無しさん@お腹いっぱい。 :03/08/29 22:10 ID:C4UnD8Pr
正義心を煽るような内容のメールを一般人に送ります ストーカーだ ひき逃げされた 万引き常習者だ 麻薬常習者だ 等色々な理由付けをします 顔写真つきで見かけたら連絡してくれといってきます まるで指名手配犯を追うようにいってきます 暴力団や闇金業者などが都合の悪い人間消すために退屈な一般人を犯罪に巻き込んでいるのです 彼らは唯待っているだけでなく自分たちのさくらを追う側に潜りこませています 返信メールをしてくれた連中にもその内集合が掛かります 発表会のような形をとらせ自分達は正義の見方なのだと思い込ませていくのです その中でターゲットのような悪人を懲らしめるのに何をしても良いという雰囲気にさせていきます その上で盗聴や盗撮といった犯罪行為を堂々と仕出す「正義の味方の犯罪者」ができていくのです 犯罪だと気づいた時点でもう遅すぎます 彼らが盗撮をして送った画像は主催者側が持っているので自分の犯罪の証拠を握られているのです だから警察に行く事もできなくなりどんどんと深みにはまっていく事になるのです
79 :
名無しさん@お腹いっぱい。 :03/08/30 01:47 ID:QWxjdL8H
Oracleってぼったくり会社ですね。自分の会社の製品を高く売りつけ、 資格の値段もバカ高い。図にのってますね。
会員サービスでパスワード忘れ対策にリマインダを作ろうと思います。 質問と答えの入ったテーブル権限は誰でも見られないとダメですよね? そうするとプログラムのバグとかで全部見られてしまうかもしれません。 どう対策していますか?
81 :
名無しさん@お腹いっぱい。 :03/08/31 20:55 ID:261RQxMo
select count(seq) from member where add_dt like '2003-08-29%'; と select count(case when add_dt like '2003-08-29%' then seq else 0 end) from member; の出力結果が異なるのですが、よくわかりません。 教えていただければ幸いです。
>>81 その構文は知らないけど、
select count(seq) from member ; の結果と
select count(0) from member ; の結果を合計した値が
出力されてるんでは?
case when add_dt like '2003-08-29%' then seq else null end
だと期待通りの値が返るかな?
>>82 すみません、解決しました。
select count(case when add_dt like '2003-08-29%' then 1 else 0 end) from member;
これが正解でした。
お答えいただき、有難うございました。
84 :
名無しさん@お腹いっぱい。 :03/09/02 04:27 ID:e0w4/zHX
データベース初心者です。 PostgreSQLと連動したシステムを利用しようとしているのですが、 その中のPHPに「DBserver,DBname,DBpass,DBuser」を指定するようになっていました。 serverというのは何を指定したらいいのでしょうか? passは設定できるものなのですか? userというのはownerと同じ意味で捕らえていいのでしょうか?
>>84 serverはPostgreSQLのデーモン(postmaster)が動いてるサーバ
同じサーバで動作してるならlocalhost を指定する事もある。
pg_hba.conf でアクセス権を設定する事
userはuser、ownerもuserの一部
コマンド createuser で作成し、SQL文のGRANT で権限を設定したもの
passはpg_hba.conf で認証方式を指定する(trustは無条件で許可)
パスワードそのものは認証方式に依存するが、passwordやcryptは
pg_shadowにあるパスワードが使われる(ALTER USER で設定)
86 :
名無しさん@お腹いっぱい。 :03/09/02 05:10 ID:rp5vU+34
>>72 9.2にアップグレードしたらいかがです?
OSも、お金があればUNIXに、ないならWINDOWS2000
にしたほうがいいと思うんですけど。。。
87 :
85 :03/09/02 06:03 ID:???
>>84 よく考えたら、設定したいというわけじゃなくて、
別に設定する人がいて、利用するだけなのかな?
そうだとすればおそらく、
userはownerと同じ、serverは省略もしくはlocalhost
passwordは無し、でいいんじゃないかな
>>80 少なくともパスワードはそのまま保管しないで暗号化する
89 :
80 :03/09/02 19:43 ID:???
>>88 ありがとうございます。それしかないですよね。
# 今はリマインダのことを考えていなかったので md5 しています
90 :
名無しさん@お腹いっぱい。 :03/09/03 12:00 ID:Ti9IUqY1
WEB製作者です、よろしくお願いします。 今度依頼を受けたWEBサイトで街の店舗検索をつけたいのですが、 取り扱ってるブランドや地域名ごとに検索できて検索結果のリスト からリンクで各店舗のページに飛べるようなシンプルなものを 作りたいのですが、どのアプリケーションや方法で作るのが一番 やりやすいでしょうか? いろいろ方法がありそうで絞りきれないのです。 よろしくお願いします。
>>90 そのくらいならどれでもできる
環境と予算と自分のスキルで決めたらよい
92 :
名無しさん@お腹いっぱい。 :03/09/17 12:18 ID:i75bUSxn
現在SQLplusの文字化けが改善されず困っています。 sqlplusで「ORA-数字」エラーのときメッセージが???????になってしまっています。 環境は solaris8,oracle8i 8.1.7です。いろいろwebで調べ試しましたがどうしてもわかりません。 どなたか詳しい方アドバイスお願いします。
出た!>いろいろ
94 :
名無しさん@お腹いっぱい。 :03/09/17 16:24 ID:l6s6T9Gn
ただでさえ廃れてるのに いちいち突っ込む時しか顔出さないのな
95 :
名無しさん@お腹いっぱい。 :03/09/17 16:35 ID:l6s6T9Gn
96 :
なりたてプログラマ :03/09/17 17:27 ID:fW7lNBka
oracleのデータベースの差分バックアップをとりたいのですが、 やり方がわかりません。どなたか教えてください。
>>92 面倒くさかったら、NLS_LANG を unset しとけ。
98 :
斉藤 :03/10/24 21:20 ID:???
柿九個むくね
99 :
アクセスのしと :03/10/25 09:48 ID:hFEwTYv2
あのー、アクセスとかでもいいですか?
100 :
アクセスのしと :03/10/25 10:25 ID:hFEwTYv2
>>96 Googleで「oracle 差分バックアップ archivelog」
102 :
じん :03/11/11 15:47 ID:31gZhLPe
初めて投稿します。 SQL超初心者でして・・・。 今、Oracle8iで作成されたデータ(テーブル)を Postgresに移行していく作業をしております。 その際Oracle内のテーブルの情報をSQL+を使い、データ型や主キー 等を調べてPostgresにて作成していこうと思っております。 しかし DESC というコマンドで調べたものの、主キー等の 情報は表示されません。 どなたかデータの細かい属性などがわかる方法ご存知の方 教えていただけませんでしょうか? また、あつかましいのですが、今私が行っている作業を もっと効率よくでき方法をご存知の方がいらっしゃいましたら ご指導お願いいたします。
103 :
NAME IS NULL :03/11/11 16:24 ID:vIgI+zdL
データベース板の中でSYBASEorサイベース を検索して周りましたがどこもかしこもおらくるおらくる みなさんからみたサイベースってどうなんでしょうか?? 触る事になったりすると危険なんでしょうか???
頭悪いかもしれんが、おまいらは、プライベートにおいてデータベースって何に使ってんの? そこんとこがかなり気になる。
CDDB
SQLServer2000(SP3)で毎日積算解を表で出す方法ありませんか? Num|Data|Total ---------------- 1| 10| 10 2| 10| 20 3| 5| 25 こんな感じになるといいのですが どなたか教えてください
108 :
NAME IS NULL :03/11/14 19:20 ID:w8w7qJca
Sybaseについて語ってるスレ紹介きぼん なければ勃てる
109 :
NAME IS NULL :03/11/15 18:48 ID:fweAESpw
初心者なので教えて欲しいのですが、 VARCHAR(30)でフィールドを定義した場合、 全角では15文字、半角では30文字入るってことですか? 基本の基本なのでしょうが、どうもわからないもので・・・。 よろしくお願いします。。
SQL> connect scott/tiger Connected. SQL> create table test (col1 varchar(30), col2 varchar2(30)); Table created. SQL> desc test Name Null? Type ----------------------------------------- -------- ---------------------------- COL1 VARCHAR2(30) COL2 VARCHAR2(30) SQL> insert into test values ('123456789012345678901234567890', '123456789012345 678901234567890'); 1 row created. SQL> insert into test values ('123456789012345678901234 567890', '123456789012345678901234567890'); insert into test values ('123456789012345678901234567 890', '123456789012345678901234567890') * ERROR at line 1: ORA-12899: value too large for column "SCOTT"."TEST"."COL1" (actual: 60, maximum: 30)
111 :
110 :03/11/15 21:40 ID:???
SQL> create table test (col nvarchar2(10)); Table created. SQL> desc test Name Null? Type ----------------------------------------- -------- ---------------------------- COL NVARCHAR2(10) SQL> insert into test values ('1234567890'); 1 row created. SQL> insert into test values ('1234567890'); 1 row created. SQL> select * from test; COL ------------------------------ 1234567890 1234567890 SQL> select * from nls_database_parameters 2 where parameter in ('NLS_CHARACTERSET', 'NLS_NCHAR_CHARACTERSET'); PARAMETER VALUE ------------------------------ ------------------------------ NLS_CHARACTERSET JA16EUC NLS_NCHAR_CHARACTERSET AL16UTF16
112 :
110 :03/11/15 21:55 ID:???
>>109 > 全角では15文字、半角では30文字入るってことですか?
ということで、CHARACTER SETによって変わります。
UTF8だと、あなたの言う全角では10文字。多分。
113 :
NAME IS NULL :03/11/16 02:39 ID:vQ2gjH0c
本当はExcel + VBAで対応できるんでしょ?
114 :
:03/11/16 12:30 ID:6KPVJwmd
今何時?
115 :
NAME IS NULL :03/11/29 17:33 ID:FTAwuTKM
超基本的な質問 oracleだと truncate table schema.file でファイルを消せますが、 db2に同じようなコマンドはありますか?
116 :
助さん :03/11/30 19:35 ID:GyAJawIm
日本でSybaseの知識者がどの程度いるのか知りませんが、 お聞きしたいことがあります。 Adaptive Server をインストールしてカスタマイズした後に、 Backup Server を入れ忘れたことに気がつき、インストールしようと 思うのですが、可能でしょうか? それともAdaptive Server からインストールしなおして再度カスタマイズしなければならないのでしょうか? どうぞよろしくお願い致します。
117 :
NAME IS NULL :03/11/30 20:06 ID:xCyJHJMA
118 :
NAME IS NULL :03/11/30 20:26 ID:/mFBWBO+
119 :
NAME IS NULL :03/11/30 21:59 ID:HWcPoVyu
オラクルでDBのデータをバックアップしたい場合何のツールを使用したらよいですか?
120 :
?? :03/11/30 22:30 ID:K8SBeRwe
以下のソースをコンパイルすることが出来ません。 どうしてなんでしょうか? package jspbean; import java.sql.*; import java.util.Hashtable; public class ExaminationBean { private Hashtable result; private int searchNumber; public ExaminationBean() { result=null; searchNumber = -1; } public void logic() { DBSimpleInterface db = new DBSimpleInterface(); db.connect( "org.gjt.mm.mysql.Driver", "jdbc:postgresql://localhost:8080/examdb?useUnicode=true&characterEncoding=SJIS", "root", "" ); String query = "select name, age, dep_name " + " from employee inner join department using (dep_id) where number=" + searchNumber; result = db.getOneRow(query); db.close(); } public Hashtable getResult() { return result; } public void setResult(Hashtable v) { this.result = v; } public int getSearchNumber() { return searchNumber; } public void setSearchNumber(int v) { this.searchNumber = v; } }
121 :
NAME IS NULL :03/11/30 22:42 ID:3vFUqVD/
>>116 プラットフォームは何だよ?
運用系じゃなきゃ、いったん落として上書きしてみ。
124 :
NAME IS NULL :03/12/02 01:33 ID:vUAKDRbI
あるSELECTしてソートしたデータ一覧から、10レコード目〜20レコード目までを取り出す カーソルの記述を教えてください。 SQL鯖2000使ってます。
>>124 FETCH ABSOLUTE @開始 FROM 〜
から始めて欲しいだけループし、テーブル型変数に入れて返す。
126 :
?? :03/12/02 03:54 ID:CRVWpN4g
>123 NAME IS NULL さん すいません。エラーメッセージは以下のようにでています。 よろしくお願いします。 ExaminationBean.java:16: シンボルを解決できません。 シンボル: クラス DBSimpleInterface 場所 : jspbean.ExaminationBean の クラス DBSimpleInterface db = new DBSimpleInterface(); ^ ExaminationBean.java:16: シンボルを解決できません。 シンボル: クラス DBSimpleInterface 場所 : jspbean.ExaminationBean の クラス DBSimpleInterface db = new DBSimpleInterface(); ^ エラー 2 個
classpathは?
>>124 カーソルでやるなら欲しいrecordだけ一時テーブルに入れておいて
カーソルのループを抜けた後で一時テーブルをselectする。
はじめまして、ご質問をさせて下さい。 会社で、配属先のPCの管理を携帯電話の2次元バーコードで行う事になり Access+携帯電話で製作して下さいと言われたました。 まったくの初心者なのですが、何からおこなえばいいのでしょうか? よいWebや参考書がありましたらお教えください。
130 :
NAME IS NULL :03/12/26 14:40 ID:7M55UFtw
設計の話なんですが、 ひとつのテーブルの2つのカラムから、同一の別テーブルを参照するような設計になってしまった場合、 どうすればいいのでしょう。 明細形式とかにするしかないんでしょうか。
131 :
NAME IS NULL :03/12/29 21:38 ID:k4AdKuDO
お聞きしたいのですが、「研究カード」を作るのに最も適したアプリケーションはどれでしょうか? 「研究カード」とは勉強しながら重要なポイントを書いていくためのカードです。分類したり関係のあるカード どうしをリンクさせたりしたいのですが。 プログラミングなどはできないパソコン初級者です。
133 :
NAME IS NULL :03/12/29 22:43 ID:9f7qLDPl
現在職業訓練を受けています。 accessの授業の最後の日に サーティファイかコンピュータサービス技能評価試験 のどちらかの受験が義務付けられており、 自分は後者を受験するつもりです。 解説付過去問題集を探しているのですが、 主催者の中央能力開発協会ではaccessについては 問題集を発行していないようです。 九州共立出版から出ている問題集には 解説が付いていないみたいで。 色々調べたのですが、この2冊以外は 出版されていないよう。 解説付のテキストをご存知の方は情報をぜひ。 冬休みまでにテキストを入手して 勉強しようと思っていたけど無理でした。 学校の授業のレベルでは実務に対応できぬと思い 自分でSQLの勉強をしております。
134 :
SQL 初心者 :04/01/01 21:59 ID:rCRRhUyq
初めてメールいたします。 MS SQLサーバー 初心者です。 MS SQLサーバーに、テーブルを作成して、リンクテーブルでACCESS 2000 SP2 を動かそうとしています。 クライアントのACCESSでの行コピーを行った後、編集→追加貼り付けが、できないのですが。 ( 追加貼り付けの文字が白くなって、追加貼り付けが選択できない) よろしくお願いいたします 斉藤
135 :
NAME IS NULL :04/01/01 22:26 ID:0hzc88H+
DML文の中で一番時間がかかるものはどれですか?
136 :
NAME IS NULL :04/01/01 23:13 ID:0hzc88H+
やっぱり口だけのカスどもには分からないか...
>>136 複数のスレッドで同じ質問をしないでください。
Oracleの場合ですと
INSERT、UPDATE、DELETEの中でどれが時間がかかるかということであれば、
ロールバックセグメントへの負担が高いのはUPDATE=DELETE>INSERT、
REDOログの生成量についてはINSERT=UPDATE>DELETEかなと思います。
ワーストケースで考えた場合、一番時間がかかる可能性があるのはINSERTです。
Oracleは、行をINSERTしようとした場合まずセグメントヘッダブロック上の
フリーリストからPCTFREEを下回っているブロックを検索して挿入対象
ブロックを決めようとします。
ここである程度探して見つからなければハイウォーターマークの引き上げを行います。
このとき、引き上げるためのエクステントがすでに無い場合はMAX EXTENTSを上限とした
新たなエクステントの確保を行い、
さらにデータファイルの容量が足りなければMAXSIZEを上限とした
ファイルサイズの拡張を試みます。
ファイルサイズの拡張まで走ってしまうとOS側の作業がかなり発生することとなり
相当の時間を要することとなります。
UPDATEやDELETEでもロールバックセグメントの拡張が
起こる可能性はありますが、それはINSERTでも同じです。
UPDATE、DELETEではユーザ表領域に対してここまでの重い処理は行われません。
参考になりましたでしょうか。
138 :
NAME IS NULL :04/01/02 00:30 ID:mdzOBQVK
Kさん 好循環 Aさん 悪循環 (健康体) (喘息) 1.(神が喘息であるかないかを決める) 2.K 喘息でない人 A 喘息の人は は体力がある 体力がなくなる 3.K A 行動力、 五感(嗅覚)が鈍り感性が変化する 4.K&A 神は異常な感性の人間は本来人に迷惑をかけ るから外に出てはいけないと思っている。 5.K 変化なし A アトピーになる 6.K 正常な感性 A 外に出なくなりさらに異常な感性になる 7.K 正常な人間 A 異常な人間(レッテル)
139 :
NAME IS NULL :04/01/02 00:30 ID:mdzOBQVK
8.K&A 死 9.K&A 来世 10.K&A 神は異常な人間は人に迷惑をかけるので行動 を抑制する必要があると思っている。 11.K&A 神が喘息であるかないかを決める 12.K 喘息でない A 喘息である 13.K&A 1.に戻る これは事実。広めようぜ 解決法:寝て起きて、やな気分でも、続けるけること。 体力をつけると感覚が正常に戻り、 アトピーも快癒に向かう。 目安としてグランドを10週くらい。 あとはウォーキング 2.3時間を目安にウインドーショッピングや本屋めぐり
データベース関連でためになるサイト教えてください
141 :
136 :04/01/02 06:08 ID:+vY2f5k5
142 :
しろうと :04/01/03 06:39 ID:rrJF+aTo
以下の機能を実現するDBを構築したいのですが、一般的にどのようなソフトウエアを導入するのでしょうか? 目的:デジカメで撮影した大量の画像(2万ファイルくらい)をサーバにおいて、複数クライアントから編集する。 業種:出版 機能: 高速プレビューでJPEG、PSD、他 主要画像フォーマットに対応 できればRAWデータも タレント名、撮影日、未使用/使用済み、必要/不要 など複数条件検索 データ削除 外部ソフトウエアとの連携
一般的にはそのソフトウエアに詳しい人がいる データベースソフトを買いましょう。 あなたの職場にOracleに詳しい人がいるならOracleを SQLserverに詳しい人がいるならSQLServerを。
144 :
136 :04/01/03 23:34 ID:ktNt/pdl
SQLserverなんていらねー
あぼーん
146 :
NAME IS NULL :04/01/08 00:13 ID:ckFKX4bD
ソートしてからグループ化したいんですけど SELECT 文が書けません...。 1000 | 1000 1002 | 1000 1001 | 1000 2004 | 2000 2005 | 2000 2003 | 2000 を 1002 | 1000 2005 | 2000 このように取りだしたいのです。
147 :
NAME IS NULL :04/01/08 00:17 ID:QhsBCuB0
フリーウェアで代表的なデータベースって何ですか?
>>146 SORT?
SQL> select * from test;
COL1 COL2
---------- ----------
1000 1000
1002 1000
1001 1000
2004 2000
2005 2000
2003 2000
SQL> select max(col1), col2 from test group by col2 order by col2;
MAX(COL1) COL2
---------- ----------
1002 1000
2005 2000
149 :
48*8 :04/01/08 04:33 ID:3FQ9TQU5
Kさん 好循環 Aさん 悪循環 <日本> 完成版
(健康体) (喘息)
1.(天国・霊界が喘息であるかないかを決める)
2.K 喘息でない人 A 喘息の人は
は体力がある 体力がなくなる
3.K 変化なし A 行動力、五感(嗅覚)が鈍り感性が変化する。
4.K&A 天国・霊界は異常な感性の人間は本来人に迷惑をかけ
るから外に出てはいけないと思っている。
5.K 変化なし A アトピーになる
6.K 正常な感性 A 外に出なくなりさらに異常な感性になる。
7.K 正常な人間 A 異常な人間(レッテル)
8.K&A 死 9.K&A 来世
10.K&A 天国・霊界は異常な人間は人に迷惑をかけるので行動
を抑制する必要があると思っている。
11.K&A 天国・霊界が喘息であるかないかを決める 12.K 喘息でない A 喘息である
13.K&A 1.に戻る
これは事実。広めようぜ
解決法:寝て起きて、やな気分でも、続けるけること。
体力をつけると感覚が正常に戻り、
アトピーも快癒に向かう。 目安としてグランドを10週くらい。
あとはウォーキング 2.3時間を目安にウインドーショッピングや本屋めぐり
絶対に直す方法:
よく海外に行ってアトピーが治る話を聞くが、基本的に日本の中のことだけなので、
海外に行くとほとんどの場合体力をつけると治る。 日本の中であっても、体力をつ
けると治るはずだが、 様々な理由により、霊界の存在がばれてしまい、 この失態が明
るみになるので、治さないようにしている。よって、絶対にアトピーを治すには、 海外
に行き体力をつける。
http://life.2ch.net/test/read.cgi/atopi/1035703616/l50を参照
150 :
146 :04/01/08 12:35 ID:ckFKX4bD
>>148 すいません。実は COL1 が日付なんで max() を使ってなかったんですけど
今使ってみたら思った結果が出力されてそうです。
時間ないので後で検証してみます。
日付に max() はまずい?
151 :
NAME IS NULL :04/01/18 01:23 ID:bPI/YQ/Z
SQLserver7をやってます。 今回はじめてストアドプロシージャを使っています。 現在ストアドプロシージャ暦3時間ほどなんですが、 引数をもったストアドプロシージャが作れるとこまで分かりました。 それはまた別のストアドプロシージャから呼び出す形でしか実行出来ないのでしょうか? 例えば、VBからストアドプロシージャをSQLみたいに実行って出来ないものなのでしょうか? 引数付きでそれが出来ないのかなぁ?と考えております。
152 :
NAME IS NULL :04/01/18 13:10 ID:EiS3gzr6
>>150 全然まずくないと思います。
>>151 余裕でできる。普通のSQLなら文字列変数に"select a, b, c from ..."
や、" delete from xxx where ..."などを代入して実行するところを、
"exec sp_name xxx, yyy"などと代入して実行するだけ。
VBからストアドプロシージャを使ったことがないので予想だが。
「sp_name xxx,yyy」の、xxx,yyyが、引数。
154 :
151 :04/01/18 15:01 ID:bPI/YQ/Z
>>152-153 回答ありがとうございます。
普通に出来たんですね、私の見ている本にはそれが全く書いてないので出来ないのかと思い、
避けて通っていました。
次から、可能性として引数を持ったSPをSQLから実行する事も考えていきたいと思います。
155 :
NAME IS NULL :04/01/25 11:10 ID:FFy97x5l
フィールド3つを合体して、1つのタイトルフィールド作りたいのですが SQL文が思いつきません。よろしくお願いします。 title1 | title2 | title3 → all_title
156 :
155 :04/01/25 11:24 ID:FFy97x5l
title1,2,3及びall_titleは文字列です。 文字の結合でなくて、title1,2,3それぞれの要素を挿入したいのですが… よろしくお願いします。
挿入の意味が分からないのであれですが、 substrとか、replaceとかの置換関数とか使えばできるのかな? #せめて、DBMSの名前とバージョンくらい教えてください。。。
158 :
155 :04/01/25 11:50 ID:FFy97x5l
>157 すいません…MS ACCESS2000を使用しています。 例えば、 title1 | title2 | title3 タイタニック|アルマゲドン|もののけ姫 とあったら、 all_title タイタニック アルマゲドン もののけ姫 みたく1列にタイトル全てまとめて表示したいのです。
>>155 そもそもDBの使い方が間違い。
titleというフィールドを一個だけ使って、
「タイタニック 」
「アルマゲドン 」
「もののけ姫 」
をそれぞれ一個ずつ入れろ。
表示するときにwhereで必要な行をselectするのがDBの使い方。
一行に、title1,title2,title3 があるテーブルは
そもそもテーブルの作り方が間違ってる。
160 :
155 :04/01/25 12:45 ID:FFy97x5l
>159 それだと他との兼ね合いでうまくいかないんで質問たのですが… すいません。もう1回考え直します…
PostgreSQLからMySQLのDB移行って難しい?
162 :
157 :04/01/25 13:21 ID:???
>158 (´-`).。oO(単なる文字列の結合じゃないのかな。。。) 改行を足したいって事? まぁ、>159さんの言うとおりだとは思う。
163 :
155 :04/01/25 14:05 ID:lQbWv2DD
アカデミー賞のDB作ろうしてたのです。 カテゴリごとに作品を列挙をしようと思ったのです。 159さんに言われて直してみたのですが…タイトルリストを別に作って ID | title ↑これを category | winnerID | nom1ID | nom2ID | nom3ID | nom4ID のテーブルにIDでそのタイトルを取得するようにしました。
164 :
NAME IS NULL :04/01/25 15:14 ID:L52hibMW
それじゃあ改善されてないよ
165 :
155 :04/01/25 15:37 ID:XF+uBVIk
>164 そ、そうなんですか?一応タイトル出たからいいかなと思ったのですが…
小出しにしないで、全部吐けや
168 :
155 :04/01/25 20:20 ID:???
>167 お手数かけましてすいません。もう少し勉強します。 ありがとうございました。
>>162 Perlのある意味スゴいところは
オブジェクト指向言語と関数型言語の調和と言うよりは
オブジェクト指向言語とPerl
関数型言語が普通持っている機能とPerl
の調和では無いだろうか…
170 :
NAME IS NULL :04/02/16 22:47 ID:bNoBEBwH
VB5で作成のアプリケーションで下の様な実行時エラーが発生しました。 「レジストリのEnginesセクションのExcelキーに設定されている値が無効です。」(Error 3433) これが発生する環境では、 HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Jet\3.5\Engines\Excelの "DisabledExtensions"="!xls"が無いことがわかりました。
171 :
NAME IS NULL :04/02/16 22:48 ID:bNoBEBwH
(170の続き) 従って、この値をレジストリに追加してやれば解決するのでは? 考えていますが(明日確認予定)、 この値は、元から設定されているものではないのでしょうか? 設定されていない原因はなに? スレ違いならどっかに誘導して下さい。
172 :
NAME IS NULL :04/02/16 22:50 ID:CR1eR4bu
DBと全然関係ないのでは?
174 :
170 :04/02/17 22:03 ID:???
どうやら板違いなので、プログラム技術板に移動します。 173さん、ありがと。
175 :
NAME IS NULL :04/02/18 02:11 ID:lXZEoopc
プライマリキーがCULUM1、CULUM2、CULUM3の3つが有る テーブルでカウントしようとするとき、 SELECT COUNT(CULUM1 || CULUM2 || CULUM3) FROM HOGETB; でいいの?一応、早さを求めるのでプライマリキーでカウント しろと言われたのですが〔そういう指示なのでROWSとか解析とかは抜きで〕 プライマリキーを元にしたカウントの仕方としては合ってますか?
176 :
NAME IS NULL :04/02/18 15:18 ID:3cojbVJ3
VC++ + MSDEでの開発で、参考になる書籍、HPを教えてください。 よろしくお願いします。
177 :
NAME IS NULL :04/02/18 18:06 ID:JQdKbH1J
a_flgとb_flgがあって、それぞれ’1’であるほうだけ表示したいんです $szSql = "SELECT * FROM tm_player"; $szSql .= " WHERE ps_id = " . $in_psid; $szSql .= "a_flg = 1"; $szSql .= " ORDER BY ply_id desc"; $result = pg_Exec($db, $szSql); $Rows = pg_numrows($result) と $szSql = "SELECT * FROM tm_player"; $szSql .= " WHERE ps_id = " . $in_psid; $szSql .= ".b_flg = 1"; $szSql .= " ORDER BY ply_id desc"; $result = pg_Exec($db, $szSql); $Rows = pg_numrows($result);; のように2回SQL発行しないと無理ですか?
178 :
NAME IS NULL :04/02/18 18:07 ID:JQdKbH1J
ちなみに表示ロジックは以下の通り if( $Rows > 0 ){ if($userid != 0){ $tmpl->assign_def( "ON_KAIIN" ) ; $tmpl->loopset( "B_LINK_LIST" ) ; for ($i = 0; $i < $Rows ; $i++){ $arrData = pg_fetch_array($result, $i); $tmpl->assign( "ID" , $arrData["id"]); $tmpl->assign( "PLYNO" , $arrData["ply_no"]); $tmpl->assign( "B_SUBJECT", $arrData["name"]); $tmpl->loopnext( "B_LINK_LIST" ); } $tmpl->loopend( "B_LINK_LIST " ) ; }else{ $tmpl->loopset( "B_LINK_LIST" ) ; for ($i = 0; $i < $Rows ; $i++){ $arrData = pg_fetch_array($result, $i); $tmpl->assign( "ID" , $arrData["id"]); $tmpl->assign( "PLYNO" , $arrData["ply_no"]); $tmpl->assign( "B_SUBJECT", $arrData["name"]); $tmpl->loopnext( "B_LINK_LIST" ); } } }
179 :
180 :04/02/18 18:08 ID:XBlOHR+L
かなり初心者ですが、Cのデータベースってなに?
180 :
NAME IS NULL :04/02/18 18:17 ID:JQdKbH1J
>>177 >>a_flgとb_flgがあって、それぞれ’1’であるほうだけ表示したいんです
a_flgが1でb_flgが0、または、a_flgが0でb_flgが1のレコードって事?
だったら、WHERE句で、(a_flg = 1 AND b_flg = 0) or (a_flg = 0 AND b_flg = 1)
とすれば良いんじゃない?
a_flgとb_flgのどちらかが1のレコードって事だったら、
WHERE句でa_flg = 1 or b_flg = 1 で良いかと。
表示ロジックは見てないけど、的外れな事言ったかな?
182 :
NAME IS NULL :04/02/18 22:22 ID:qcEkABe8
Msql-Mysql-modulesの # make test で下のようなメッセージが出るんですが、 このままインストールするとまずいですか? Failed 2/17 test scripts, 88.24% okay. 2/746 subtests failed, 99.73% okay. make[1]: *** [test_dynamic] エラー 29 make[1]: 出ます ディレクトリ `/usr/local/bin/Msql-Mysql-modules-1.2219/mysql' make: *** [test] エラー 2
すみませんが質問です。 10年くらい前にNECのPC98(それもたぶんDOS)で動いていた Let'sアイリスというデータベースがあるのです。 そのデータベースでつくったデータがFDに入っているのですが これを読む方法を探しています。 作った会社に問い合わせたところユーザー番号がわかれば コンバートするサービスがあるとのことなのですが、何分昔の ものなのでもうわかりません。有料でもユーザーでなければ コンバートできないと言われてしまいました。 コンバートする方法、もしくは有料でいいのでコンバートしてくれる サービスをご存じのかたはいらっしゃいませんでしょうか?
テーブルのNULLを許可されたフィールドに空文字を入力したいのですが、 Insert X Values ("")、もしくは Values (' ')などとするとエラーがおきます。 どうやって直せばいいんでしょうか?
185 :
NAME IS NULL :04/02/24 22:23 ID:gb67vciR
>>184 どんなエラーが出るんだ?
構文が違うだけじゃない?
INSERT INTO テーブル名 (列名) VALUES (" ") でいけると思うけど。
186 :
185 :04/02/24 22:25 ID:???
>>185 あ、一応。
ダブルコーテーションじゃなくて、シングルコーテーションのが良いかな。
187 :
NAME IS NULL :04/03/24 16:00 ID:xvy/jEwE
sql-server初心者なのですが、ORACLEでDESC文ってあるじゃないですか。 DESC テーブル名 ってやるとテーブルのフィールド情報が出てくるやつ。 あれのsql-server版ってどなたかご存知ではないでしょうか? お願いします。
>>187 sp_help tablename
sp_helpindex tablename
sp_spaceused tablename
というのは Sybase の話( ・∀・ )
189 :
NAME IS NULL :04/04/06 20:45 ID:lWnFG52H
レプリケーションの信頼度ってどんなもんなんでしょうか? あまり信用できないものなのか 正しく設定すれば問題なく動くものなのか そこらへんを特に知りたいです。 とりあえず データベースはどれか限定しないです。
190 :
NAME IS NULL :04/04/06 22:20 ID:GXxkLk8T
DB設計について話し合うスレはどこ?
sql serverで2003-05-03から2003-06-05まで といったような範囲を抽出したいのですが どのようなコードを書けばいいでしょうか。
192 :
NAME IS NULL :04/04/07 19:35 ID:Ip6Jhah0
パソコンを買い換えて、最新版のOoulookを導入したら、前のハードディスクのメール履歴が消えてしまいました。 どうしたら見れるでしょうか・・・。教えてください。お願いします・・・。
193 :
NAME IS NULL :04/04/07 19:35 ID:Ip6Jhah0
すいません、Outlook です。 それに場違いでした・・・。
194 :
NAME IS NULL :04/04/08 02:01 ID:+VTjr9hl
1 12 31 41 といった最大で二桁のデータがあった場合 あらかじめ桁数を指定して 00001 00012 00031 00041 のようにしたいのですがどうすればいいのでしょうか?
197 :
NAME IS NULL :04/04/08 17:50 ID:4JumAgE/
SQLに興味があります。ちょうどACCESSを持っているので ACCESSでSQLを勉強できたらいいかな〜と思い、 本屋でACCESSでSQLを勉強する本を探したらほとんどないみたいです。 SQLを初歩から書いてある本だと、オラクル・シルバーの対策本が いろいろでていて良いようですが、何か良い方法はありますでしょうか?
単純にSQLを学びたいの? であれば、ACCESSのヘルプで『クエリ』で検索してみて! いろいろ調べられると思うけど。 本で勉強するより自分でいじってみることをお勧めします。
199 :
NAME IS NULL :04/04/08 21:44 ID:LylrRya5
Q1 SQLServerにはOracleでゆーところのロールバックセグメントに 該当するモノは無いのでしょうか? Q2 SQLServerにはOracleでゆーところのデータベースリンクに 該当する機能は無いのでしょうか?
200 :
NAME IS NULL :04/04/11 01:36 ID:ZD6Yi4L1
201 :
NAME IS NULL :04/04/11 09:42 ID:8f67wv6r
202 :
NAME IS NULL :04/04/13 20:52 ID:uWW+pR+n
203 :
NAME IS NULL :04/04/13 20:53 ID:uWW+pR+n
>>199 Q1:多分トランザクションログのことだろう。
Q2:多分レプリケーションのことだろう。
どちらにせよ、これらをキーワードにSQLServerのBooksOnlineで
調べてみてください。
204 :
NAME IS NULL :04/04/15 03:32 ID:jowvUD2+
SQLの質問です。お願いします。 DATA_A, DATA_B, DATA_C の列があり、それぞれ値が入っています。 SELECT DATA_C FROM XXX ORDER BY DATA_A/DATA_B のとき、ORDER BY DATA_A/DATA_B に、0の除算が発生してエラーがでます。 0になるものを、並びの最後にもっていくには、どうすれば良いのでしょうか?
1つのデータベースに テーブルは何個まで作っても大丈夫でしょうか? 借りてるレンタルサーバーがDB1つにつき300円取られるので 1つのDBで1000個とかテーブル作っても大丈夫だったら DB1つでやっていこうと思うのですが。 よろしくお願いします。
206 :
NAME IS NULL :04/04/15 10:58 ID:222h/ESB
postgeresqlについての質問です。 現在TurboLinux上においてJSP + Postgresqlを使用したプログラムを作成しました。 そのホストマシンからだと接続を含め問題ないのですが、移行用のマシン(win2000)に プログラムを移行し、それをまた自分のマシン(win2000)から参照しようとすると HTTP Status 500 - type Exception report message description The server encountered an internal error () that prevented it from fulfilling this request. exception org.apache.jasper.JasperException ・ ・ ・ root cause java.lang.NullPointerException ・ ・ ・ というエラーが返ってきます。 pg_hba.conf には自マシンと移行マシンの両方のIPを追加して、postgresql.confの方は tcpip_socketの項目のコメントをはずしています。 プログラムは接続先をLinuxマシン:5432に変更しています。 説明が下手で申し訳ないのですが、昨日から原因が解らず困っています。 ピンときた方は是非教えて下さい。
>>204 ・CASE を使う
・一時テーブルで中間処理する
・ソートはフロントエンドで行う
・セッションオプションで、ゼロ除算を無視させる設定をする
方向で考えてみよう。
ちなみに数学上は、0で割った値は無限大に振れる(極大)
ORDER BY でそのような式を指定した場合
何が起こるか神の味噌汁
>>205 テーブルの個数はRDBMSの実装およびレンタル鯖業者によって違うだろうが
たいていの鯖屋が設けてるのはMySQLかな?
ためしに作ってみれば? としか言えないが、個人的には
1000個超のテーブルが必要な設計がどうにかしてる、とだけ指摘しておく。
>>206 説明がヘタでわからんのだが、移行用のマシンに移行したのは
JSP(Catalinaか?)だけ? postgresも?
・Linux側の設定(5432/tcp は、外から接続できるか?)
・移行側(w2k?)のJDBC周りの設定どーよ?
というわけで、どちら側の問題か切り分けてみないと…
208 :
NAME IS NULL :04/04/15 11:56 ID:Cwu6yyaA
あのー… 全然、もの凄い勢いじゃないんですけど
209 :
207 :04/04/15 12:03 ID:???
>>208 過疎板に何を期待してる?
本当にもの凄い勢いでレス付けると単なる煽りに成り下がってしまうからなぁ。
ちうわけで藻前ももの凄い勢いで回答汁
210 :
204 :04/04/15 18:13 ID:r2Q4gUZz
>>207 さん、どうもありがとうございました。
私の持ってるSQLの初心者本には、CASE文が載ってないので、もっといい本を
買ってきます。(お勧めとかありますか?)
204で書いたのは、簡略化したものなので、実際には、内容は複雑化しております。
とりあえず、今、一時テーブルの方法で試してみます。
ありがとうございました。
211 :
NAME IS NULL :04/04/15 23:09 ID:PvNdPHFr
>>211 ソートはフロントエンドでやれという主張じゃないか?
これはSybaseの話だが、うまくインデクス張っとけば
ORDER BY に対しても効率的に働く。
件のURLでの主張は、俺には賛同しかねる部分が多い。
213 :
NAME IS NULL :04/04/17 00:28 ID:bpgspsn8
PostgreSQL で質問です。 テーブル名が違い、中にあるフィールド名などは共通のテーブルから 同じフィールド名のデータを取り出すSQLはどうすれば実現できますか?
>>213 A1. UNION
A2. たてつづけに一時テーブルに挿入
テキストファイルでデータをもらうときに、 ヘッダー情報とかフッター情報とか必要なんでしょうか? (ホストにデータを渡すことが前提)
ほんとに困っているので、
この人
>>216 以外の方、教えてください。
( ´,_ゝ`)プッ
どうしても必要かどうかは分かりませんが、 「システムの仕様がどうなっているか」じゃ無いですかね。
>>207 >1000個超のテーブルが必要な設計がどうにかしてる、とだけ指摘しておく。
10個のテーブルが必要なアプリを100個動かしたいとかそーゆう話じゃねえ?
221 :
NAME IS NULL :04/04/26 21:36 ID:hVx47epU
SQL Server 2000の質問なんですが、このスレでよいでしょうか?
>>221 SQLServerのスレもあるがどっちに投げても構わんだろう
223 :
NAME IS NULL :04/04/27 13:02 ID:o91YP1Fd
データベース用いるケースは * 皆が頻繁に更新を行い * 頻繁に抽出が行われ、 * それが高速である必要がある この3つが揃うときだよね。 これらの条件のうち一つでも外れていたらデータベースは使ってもムダ。 ファイルを用いたデータ管理をすべきだと思う。 何か反論ありますか?
>>223 分離する条件が揃ったとき
・フロントエンドが複数プラットフォームにまたがるとき
・フロントエンドとバックエンド(RDBMS)のスケーラビリティ・アベイラビリティを
別個にチューニングしたい場合
・でんでん(←なぜか変換できない)
以下反論
* 皆が頻繁に更新を行い
皆が、上述のような、複数箇所からの更新が行われる可能性があれば、
これだけでRDBMSを切り離す意義が出てくる。
* 頻繁に抽出が行われ、
データソース中のレコードが膨大であれば、ローカルDBにとって不得手と
なる部分が出てくる可能性がある。(これに関しては、適材適所と俺は思う)
また、抽出が頻繁でなくても、使う意義が出てくる(後述)
* それが高速である必要がある
超高速でなくても、そこそこ高速に、確実な更新を行うためという目的もありえる。
トランザクション、トリガ、差分バックアップなどがあった方が設計が楽だろう?
単純なキー検索でオーバーヘッドを避けつつひたすら高速性を狙うなら、
潤沢にメモリを積んでのローカルDBも大蟻だと思う。
ちうわけで
>この3つが揃うときだよね。
>これらの条件のうち一つでも外れていたらデータベースは使ってもムダ。
>ファイルを用いたデータ管理をすべきだと思う。
これ、どの教科書に書いてあるのか教えて呉
ところでApacheのアクセスログですらセミリアルタイムでRDBMSにたたき込んでいますが何か?
225 :
NAME IS NULL :04/04/28 19:52 ID:wHnIUUPe
>>224 ナルホド
まぁ、適材適所としかいいようがない。
しかし、漏れが思うに、データベース必要でもないのにデータベース入れてる
ケースが多すぎると思う。
めったに更新しない商品データをデータベースに入れたり。
しかもそれをウェブサーバと繋げて外に公開していたりする。
チミのゆーデータベースが何をさしとんかしらんが ・複数のプロセスが読み書きするデータを ・同期とか考える(あるいはバグなしに作りこむ、あるいはホシュする)のがマンドクサいとき RDBとはいわんがDBM系使うのはありだろ あるいはデータを様々な方法で集計したいとき、 一度テンポラリなDB(テーブル)にぶっこんでSQLで集計、てのもアリじゃね?
>>225 おカネが欲しい連中に提案されたんじゃネーノ?
>>224 >ところでApacheのアクセスログですらセミリアルタイムでRDBMSにたたき込んでいますが何か?
貴方、かっこよすぎ
>>226 まぁここでいうのはいわゆるSQL叩くRDBのこと
DBMを内部的に使うのが正しい場合もあると思うよ
少なくともRDB使うよりはポータビリティ高い
いや、集計のためにSQLなんて、どうかしてると思うんだけど、、、よっぽど時間のかかる計算でないかぎりは
>>228 INSERT間に合うんかいな
「セミ」リアルタイムちうのがミソなのかな?
231 :
NAME IS NULL :04/05/08 00:39 ID:RTjPp/JA
おまいらはどうやってそんなに詳しくなったんだ? 書籍なり上達法なり教えてくれませんか。
>>231 何度もコカした
知識を裏付けする経験を積めるだけの素養があれば問題ナシ
質問です。 varchar(30)なのに (60分)って追加すると(60 という具合に追加されてしまうのはなぜでしょうか?
処理系を書け。 それから、複数の処理系を使ってるなら、 どの組み合わせでは「問題なくいけた」かを書け。 もうひとつ。抽出した結果が化けてるんじゃないだろうな?
抽出した結果が化けてるのではありません。 が、化けるやつと化けないやつがあります。 化けるやつというのはupdateしても直りません。
第5話、第11話という具合に「第」「話」を挟んだデータを作りたいのだが 型をintにすると数値のみしか記入出来ないし varcharにするとソートかける時に番号順に並ばない。 どうすればいいんだ
SELECT '第'+table.data+'話' From table order by table.data;
238 :
NAME IS NULL :04/07/31 23:51 ID:gm78S/1D
どうもはじめまして2ちゃんに初めて書き込みます ゴミバコの設定を変えて「ゴミバコを空にする」って項目をなくしたいんですけどどうすればいいのでしょうか? どなたか親切な方いらしたら教えて下さいお願いします 正直ここに書き込んでいいのかすら疑問ですがよろしくお願いします
239 :
NAME IS NULL :04/08/01 00:05 ID:XROISCMq
238ですOSはXPで打ち込むタグもわかるんですがどこにいれればいいかわかりません お願いします
240 :
アルル :04/08/01 00:26 ID:jX+EEun8
任意ラジオCDを知っていますか。知っている人にお願いです。 秋葉原で現在このCDを売っている店を教えてください。☆
linux板から来ました。 くだらない質問ですまそ。Linuxでデータベースを構築しようと 思いますが、対象は画像ファイルが中心です。 今、リアルタイムで秒10枚程度、25KB前後の画像ファイルを 格納していくとしたら、どのデータベースが堅いでしょうか? 定期的にバックアップと削除が必要なので、DBへの登録と削除の 処理が軽いことが前提ですが、お勧めはありますか?
>>241 Oracle。
というのはおいといて
deleteが多いならPostgresよりMySQLかなあ?
243 :
めぐ :04/08/02 22:56 ID:SzP7p15/
ACEESSに140万のデータが入っています。 フィールドは2つしかありません。 簡単な更新クエリは出来たのですが ちょっと複雑な更新クエリにすると更新ができません。 (更新しますか?と聞かれて"はい"を押しても変更されない) そこで、データを分割して作業しようと思い、 とりあえずオートフィルタでNOを振ってから分割しようと 試みたのですが、データが多い為か、オートフィルタNOが振れません。 こういった膨大な量のデータをACCESSにおいて分割したいとき、 なにかいい方法がありますでしょうか? そのほかなにかアドバイスがありましたらお願い致します。 ちなみにSQLの知識はありません!
244 :
NAME IS NULL :04/08/02 23:30 ID:WXdgh854
おしえてください。 oracle8で、 ----------------------------------------------- 処理A 処理B Tableトランケート ↓ INSERT 〜 SELECT発行 ↓ ←← このへんでselect発行 (件数が多いためindex 該当データがないのでinsert(あればupdate) 張ってるけどSELECTが遅い) ↓ ↓ サクッとcommit; ↓ INSERT完了、commit; (←・・・のはずが途中の処理Bのせいでkey重複エラー発生) ---------------------------------------------- こんな感じで多重keyエラーが出てしまいます。 処理Aで、だいたい3〜5万件くらい作っているのと selectに時間がかかってしまい、処理Aは10〜15分ほどかかっています。 こういうケース、結構あるんじゃないかと思うんですが、 皆さんはどのように対応してるんでしょうか? というかどうやって回避したら良いでしょうか・・・? うわさによると、For uodateの如く、 selectすら拒否するロックができるかもとか言っている人がいたのですが、 果たしてそのようなことはできるのでしょうか?
このばやいBのselectは禁止する必要がなくて、insertのみを防げばよい。
所持する文献の数が増えてきたので、個人用DBの構築を目論んでます。 ちょっと大袈裟でしょうが、折角なのでMySQLに触れてみることにしました。 (C,Ruby等のプログラミング経験有り、DB経験無し) この板見てますと同様の境遇(ローカルに個人用DBを所持)の方がいらっしゃいますが、 そういう方はどういうフロントエンドを使ってるのでしょうか? ローカルにApache立ててPHPを使う?あるいはコマンドラインから直接タイプ(コピペ)? なるべくサーバは立てたくないし、それなりにGUIが欲しいという状況で、自分が 何をする(作る)べきか、皆様の御知恵を拝借したく書き込みました。 低水準な質問で申し訳無いですが、よろしければ御教授下さいませ。
ちょっと(だいぶ?)違うけど、デジカメ画像の数が万を超えたのでデータ整理用にDB使ったアプリを 作ろうと思ってるんだけど、おいらはFirebird を使おうかと思ってます。 RAW主体だからリムバーブルメディアやTB級の(1年弱で今のところ200G程度)データ扱いたいし、 FirebirdならDBをインストールしなくてもいいアプリ組込み用のDLLのみで動作するタイプもあるから。 あとで必要なら普通のDBサーバにも移行できるしね。
>>245 普通に考えてみたんだけど、どやって?
(漏れは244じゃないけど)
排他制御もinsertに対しては無効だよね?
lock table ~ in exclusive mode でいけるっしょ? insertだけ無効って、なんで?
PHP+MySQLで掲示板作ったのですがコメントの部分がたまに文字化けするのはなぜでしょうか? 文字コードもEUC-JPにコンバートしてるのですが、たまーに文字化けしてしまいます。 ご教授よろしくお願いします。
251 :
NAME IS NULL :04/08/04 22:44 ID:HQekxBXz
データーベースについては全くの初心者です。 データーベースの基本的な解説書を教えてください。 個人的にやってみようと考えているのですが、お金はかけられないので、 Linux に付属のDBでやりたいです。その場合はどのようなものがあるのでしょう か? 宜しくお願いします。
253 :
NAME IS NULL :04/08/05 17:54 ID:DNMUMrxA
odbcの設定をexportして、それを他の端末にimportする、 なんてことはできないよね?
ファイルデータソースならできるんじゃ?
255 :
NAME IS NULL :04/08/05 18:17 ID:DNMUMrxA
システムの方なんです。 すべての端末に手でポチポチ入力してくの大変だと思うんだけど、 みんなどうしてんだろ。
ODBC.INI とかに設定書いてなかったっけ。 しかし、ドライバ側の設定になると、ドライバ依存だからもはやなんともならんと思う。 どうしても数こなさにゃならんとなったら、 インストール前と後との差を取るアプリあるから、 それで設定前と設定後を見比べて、変更ツール作るかなぁ。 10台なら泣く泣く手作業する。100台ならツール作る。そんな感じ。
257 :
SQL初心者 :04/08/05 22:08 ID:gV7q+xDA
SQL文を解析してSQLが意図するDBへのアクセスを視覚化してくれるツール ございませんか?宜しくお願いします
オラクルの最も簡単な設定法を教えてください。 環境:Win2000Pro オラクルVer:10gトライアル版 その他:オラクル本体、クライアントともに同一端末にインストール よろしくお願いします。
262 :
258 :04/08/09 10:48 ID:???
>>259 スマソ、漏れがDB技術者として雇われてるんだ。
会社の人(以下、会):君、DB経験は?
漏れ(以下、漏):SQL SeverとAccessが少し。
会:Oracleは?
漏:ありません
会:OracleのDB管理の案件があるのだが、教えるのでやってくれんかね。
漏:教えてもらえるなら。
会:では、この端末(P3、メモリ128)に、Oracle入れて。
漏:はい
クライアントインストール
漏:入れましたけど、DBサーバの設定教えてください。
会:何かねそれは?
漏:DBがあるんじゃないんですか?
会;ないよ。
漏:?
会:その端末に、DBを適当に作って勉強してくれたまえ。
漏:じゃ、クライアントだけじゃ駄目ですね。
会:何かねそれは。
クライアント・サーバの説明
会:なんかややこしいな。よその会社でセットアップしてたの見たときはもっと簡単だったぞ。
漏:いやそれは、すでにDBサーバがあって、クライアントのインストのみだったのでしょう。
会:なんかよくわからんがはやいことうまくやってくれ。
以上だ。漏れはどうしたらいい?
そもそもSQL Severにしたってサーバ担当がいてたし、DBサーバの設定なんてしたことねぇよ。
初心者ですがよろしくお願いします。 なんかちょうど会社がIT革命ってる時期に入社してしまい、 しかも元々あんまり詳しい人がいないということで 大して経験もないのにデータベースを扱うチームのリーダーぽくなってしまいました。 一から運営を任されてる状態で、もうてんやわんやヽ(`Д´)/ウワアァァン 会社としては、どこにいても誰でも更新できるDBを作ってほしいみたいなんですけど、 データアクセスページっていうのは、実用性はありでしょうか? なかなか積極的に説明してくれてるとこがなくって、あんまりなのかなあって 印象を受けているのですが… やっぱり大人しくSQLを勉強した方が良いでしょうか?
>どこにいても誰でも更新できるDB wikiでも使えば?
いいね
アドバイスありがとうございます。wikiって初めて知りました。 いくつか見てみたのですが、数万件のデータを扱うのでも大丈夫なものですか?
267 :
po :04/08/11 21:32 ID:???
ちゃんとしたwikiソースを持ってきたなら 大丈夫。
269 :
NAME IS NULL :04/08/15 00:12 ID:xOjIZ/7h
会社で、ACCESSを使ったDBの設計をしたいのですが どこか良い業者しってませんか? 大阪にある会社何で、業者も大阪近郊が望ましいです。 社内SEにやらせるという、やり方よりも業者を使って構築する方法 で考えてます。宜しくお願いします。
270 :
Po :04/08/15 21:47 ID:???
>>269 上場企業で、大阪支店のある業者。
ここで具体的な名前だしていいのかわからんから
あえてふせておくが、Accessで開発してるところあります。
システムトラブル時の対応も早いです。
271 :
NAME IS NULL :04/08/16 01:07 ID:yz1bWMbI
>270 お願いします。せめてもう少しヒントください。 無茶苦茶困ってるんです。 たのんます。
273 :
NAME IS NULL :04/08/18 10:53 ID:Bat91ee4
{本の名前 varchar, 売り場ID int, 価格 int}というフィールドがあったとして, 『売り場毎に一番高い本の名前を得る』クエリを実現したいのですが, SELECT 売り場ID, MAX(価格) GROUP BY 売り場ID とすると,本の名前が出せません・・・。一つのクエリで実現する方法が あったら教えてください.
274 :
NAME IS NULL :04/08/18 11:53 ID:itoabxy9
DB2でテンポラリ・テーブルスペースの作成コマンドを入力したら SQLSTATE=428CBが発生しました。これはページ・サイズが 表スペースと関連付けられたバッファー・プールの ページ・サイズと同じではない場合のエラーとのことでした。 次に同じコマンドにバッファー・プール名(ページ・サイズ同じ)を 指定して実行したところ、sqlstate=57003 「指定されたバッファー・プールは活動状態ではありません。」 発生してしまったのですが、こちらはどう対処したら宜しいのでしょうか? 宜しくお願い致します。
275 :
すいません :04/08/18 23:42 ID:9YX8lYZ0
MySQL4.0についての質問なのですが、 もしかしたら、ふざけるなと怒られるかもしれませんが当方まじめに悩んでいます。 お力をお貸しください。 設定で、my.cnfをいじろうとマニュアルを読んだのですが、 my.cnfに書くことができる設定が多すぎるのと、 パラメータと、設定できる範囲、推奨値等を検索しながらmy.cnfをいじっていたのですが、 マニュアルだと、MyISAM, DBD, InnoDB, sqld, セキュリティとパラメータがべつべつの場所に 記載されているのと、グループもどんなグループが利用できるのかもわからず どつぼにはまってしまいました。 my.cnfの システム全体に利用するパラメータ, パラメータの説明, 設定範囲, 推奨値、 グループごとに利用できるパラメータ, パラメータの説明, 設定範囲, 推奨値の 一覧てどこかに無いでしょうか? 環境は MySQL: 4.0.20 OS: RedHatLinux9.0 言語:PHP4.0 です。 駄文長文申し訳ありませんがよろしくご指導ください。
276 :
NAME IS NULL :04/08/19 10:37 ID:RvHBTDEp
恥ずかしい質問なのですが、教えてください。(*- -)(*_ _)ペコリ 1つのテーブル内の、 2つのフィールドの計算結果を別の1つのフィールドに自動計算したのですが、 どうすればいいのでしょうか?計算式がわかりません。 MySql+phpAdmin つかってます。 例)hogeテーブル フィールド hoge1 int(5) フィールド hoge2 int(5) フィールド hoge3 int(5) <-ここに、 例えばhoge2-hoge1 の結果を出したい
>>276 テーブルでは無理じゃない?
ビュー作ってビューで計算するのがよさそうだけど
278 :
NAME IS NULL :04/08/20 09:47 ID:XS0zbX2d
>>277 やはり、無理でしょうか・・・・
hoge1とhoge2をselect文で取りだして、
計算結果を hoge3にINSERTする方法でやってみます。
279 :
NAME IS NULL :04/08/20 13:00 ID:39fYexR2
>>276 Firebirdなら計算型の列を作れば可能なんだが。
トランザクションって何故必要なんでしょうか…? データベースの試験で出た問題(「トランザクションとは何か。また、何故必要か」)なんですが、何故って言われてもって感じです。
ロックが必要だから
282 :
NAME IS NULL :04/08/20 19:37 ID:vDurVTZ+
イースト社のskylinkというソフト(
http://www.est.co.jp/skylink/ )
に関して、ネット上での解説ページや2chでの関連スレッドをご存じの方が
いらっしゃったら、ご教授ください。
今度働き始めた仕事場では、今まで紙に打ち出されていたデータを手でエクセルに入力していたのですが、
skylinkを操作してもっと簡単にデータをエクセルに移せるようにしろという
仕事が回ってきたのです。グーグルで検索してもほとんど情報がないので
困っています。どうかよろしくお願いします。
>>281 ロックが必要…?競合アクセス(データ変更)が起こらないようにって事ですか?
284 :
NAME IS NULL :04/08/21 16:20 ID:1QxAMdUd
すれ違いかもしれませんが、 黒船っていう電話帳のデーターベースソフトについて、教えてください。 発売元がもうないので、サポートセンターに電話しても、つながりません(当たり前ですが) 当方所有しているのは、2004年の全国版です それで、質問なのですが ある地域の、法人をすべて検索させるようにしたいのですが 半角の( を入れると鰍竍汲ヘ、検索できるのですが みなし法人は、検索しかねます。 なにか、よい方法はありますか? ご存知の方お教えください。
285 :
NAME IS NULL :04/08/22 04:16 ID:vnDIxQ82
当方超初心者でAccess使ってテーブル作成してます。 顧客テーブルからID項目を明細テーブルにコンボボックス形式で引っ張って こようと考えております。 ドロップダウンリストのボタンを押して表示するのはIDと顧客名にします。 表示された中から選択して決定する訳ですが、明細テーブルにあるのは ID項目ですので顧客名までは表示されません。 この場合に顧客名まで明細テーブルに表示したいのですが、何か簡単な方法 があるのでしょうか? ほんとに初歩的な質問で恥ずかしい限りですが、どなたかご教授頂けません でしょうか。 よろしくお願いいたします。
286 :
NAME IS NULL :04/08/22 10:59 ID:HXdAQdIP
すいません、激しく困っております。どなたか知恵を貸してください。 表[FOO] PARAM01 NUMBER SUBPARAM01A NUMBER SUBPARAM01B NUMBER PARAM02 NUMBER SUBPARAM02A NUMBER SUBPARAM02B NUMBER ...(中略)... PARAM99 NUMBER SUBPARAM99A NUMBER SUBPARAM99B NUMBER 表[BAR] SUBPARAMS NUMBER こんな表FOOとBARがあったとして、 FOOのPARAMxxの値が特定値だった場合にSUBPARAMxxA,SUBPARAMxxBの値を表BARのSUBPARAMSに入れたいのです。 カラム方向に進むカーソルなんて無いですよね…… いい方法は無いでしょうか。 カラム名だけ違う処理を99個並べるのは避けたいところ……
287 :
286 :04/08/22 11:01 ID:HXdAQdIP
すいません、環境はORACLEのPL/SQLです。 PL/SQL歴は3日くらいです。
元のテーブルの設計が悪いということは分かってると思うけど、 それはそれとして、VIEWを作ったらうまくできないかな? create view foo_view as select param01, subparam01a, subparam01b from foo union select param02, subparam02a, subparam02b from foo union … ;
289 :
gege :04/08/22 15:49 ID:8OlrCLzp
MySQLのphpmyadminでOverload ってのがありますが、 これって負荷と同義で考えて問題ナッシングでしょうか?
291 :
286 :04/08/23 02:04 ID:XUUpXaQv
>>288 VIEWですか……でも結局一度はSELECT文を99個並べないといけないんですよね。
DBの構造が決定的に悪いのが原因なので、明日作成者に文句を言ってきたいと思います。
ご回答ありがとうございました。
CASEが使えるDBだからCASE使って力技で出来ないかな?
動的にSQL文くみたてればええやん
oracleの8以降ならできるっしょ
>>287
Access の(ものらしい).mdb ファイルを mysql で扱えるようにする事って出来ますか? もちろん Access は持ってないです。
295 :
po :04/08/25 15:46 ID:???
>>294 一発変換はむずいだろうな。
何段階か踏んでいいのなら、Access持って無くても出来る。
select ローション from 2ch where ペペ=( 相関副問い合わせって、この後にどんな感じになるんでしょうか??? 相関副問い合わせはよく解らんです。
297 :
NAME IS NULL :04/08/26 10:21 ID:GBTb/k10
ある製品を購入したら、SQLServer2000DeveloperEditionの開発用およびテスト用限定版という CDがついてきて、これでテストしてみたいと思うのですが、これの製品版と違うところって何がちがうのですか?
シスアドスレで一日反応がなかったのでこちらで質問します。 シスアド参考書の問題に 「SELECTやINSERT文はデータ定義言語の一つである。」 って書いてるんですけどデータ操作言語じゃないんでしょうか? なぜデータ定義言語なんでしょうか?
問題に書いてあったんだったら「答は×」でいいんじゃなかろうか。
>>297 本番環境で使っちゃダメってこと。
DeveloperEdition = 開発用およびテスト用限定版 という意味。
301 :
300 :04/08/27 21:03 ID:???
組み込み系で使えるフリーのDBって無いですか? 電断対策用にトランザクションがあればあとはショボショボでいいです。
Firebirdなら、WindowsとLinux用のDLLや.soのみで動作するアプリ組み込み用エンジンがある。 とりあえず商用でもフリーで使えるな。
304 :
NAME IS NULL :04/09/02 15:33 ID:vOQvIN82
済みません、教えてください。 AとBという2つのテーブルがあります。 両テーブルともIDと日付、その他のフィールドがあり、IDと日付がキーになります。 各テーブル毎に抽出条件を指定し、ヒットしたレコード件数(A+B)の合計を求める。 ろいう式を1つのSQL文で実現させるにはどうすればよいのでしょうか? お願いします
305 :
NAME IS NULL :04/09/02 23:17 ID:ql3TmYBD
AとBが1対1か1対多かわからんな、そもそも関連づけされてるのかはっきりしないな select count(*) as Acnt from A where (Aの抽出条件) select count(*) as Bcnt from B where (Bの抽出了見 Acnt + Bcnt 。。。外してる気がするぞ
というよりも、前提 DB もわからんし。学校の宿題かなんかかね。 とりあえず疑問のおいらの解釈があってて、Firebird ならこれで行ける。 一応1行SQLになってるが。まぁ2回 SELECT してるとも言えるが。 SELECT (SELECT COUNT(*) FROM tbl1 WHERE id = 1) +(SELECT COUNT(*) FROM tbl2 WHERE id = 2) FROM RDB$DATABASE;
307 :
NAME IS NULL :04/09/03 15:14 ID:KILaEJEu
Oracle も PostgreSQL も、トランザクションレベルを serializable に設定 しても厳密に serializable にはならないようですが、それぞれ何が保証され て何が保証されないのでしょうか。適当なレファレンスはありますか? (Oracle はかなり頑張っていますが、複数のトランザクションが複数のテーブ ルにアクセスする場合、アクセス順によっては serializable でなくなります。) strict two-phase locking による serializability 保証をしないのはパフォー マンスが落ちるからでしょうか。いずれにせよ自分で LOCK すれば問題ないの ですが、serializable の看板に偽りがあるのは何となく腑に落ちません。
308 :
NAME IS NULL :04/09/04 00:31 ID:7Z38XOom
>307 ORACLEマニュアル(データベース概要)によるとserializableにした場合、 ・内容を保証しない読込み(ダーティーリード) ・仮読込み (ファントムリード) ・未コミット読込み(繰返し読込み不可) が起きないって書いてある。 実装上は、serialに処理できないときは、ユーザーへエラーを返すからそれを ハンドリング(リトライとか)しろということみたいだけど。 厳密にserializableにならないってどういう意味?
309 :
NAME IS NULL :04/09/04 10:03 ID:fpCYAHNF
310 :
307 :04/09/04 12:44 ID:DURbHXe3
>>308 レスありがとうございます。。厳密に serializable でないケースというの
は、たとえば A, B, C, D という 4 つのフィールドがあり、初期状態では
A=B=1, C=D=2 であったとします。これらのフィールドにトランザクション
T1, T2 が以下のアクセスをする場合、
T1 ... BEGIN; B:=A; C:=B; COMMIT;
T2 ... BEGIN; D:=C; A:=D; COMMIT;
たとえば T1 が終わった後に T2 が実行されるならば、最終的には A=B=C=D=1
となり、逆に T2 が終わった後に T1 が実行されるなら、A=B=C=D=2 となりま
す。T1 と T2 が serializable のレベルで分離されているのであれば、この
2 つ以外の結果が生じることは無い筈です。
ですが、アクセス順が以下の場合
時刻: t0 < t1 < t2 < t3 < t4 < t5
T1: BEGIN; B:=A; C:=B; COMMIT;
T2: BEGIN; D:=C; A:=D; COMMIT;
PostgreSQL では A=2, B=C=1, D=2 となります。Oracle の場合、A,B,C,D が
同一テーブル内に存在する場合は、t4 の時点で「シリアル化できません」と
いう正しいエラーを返すのですが、それぞれが別のテーブルにある場合は
PostgreSQL と同様の動作をします。
Oracle の「データベース概要」によれば、Oracle の「シリアル化可能」モー
ドでは読込みが書込みをブロックしないとあるのでそれが原因なのかも知れま
せんが、同一テーブルだとブロックしたりするんですよね…。訳がわかりません。
311 :
NAME IS NULL :04/09/06 10:17 ID:EJvheeEO
フリーのデータベース無い? 写真が貼り付けられる香具師キボン。
クエリアナライザやCSE的な、ODBC接続してSQLを入力やその結果を表示させる 事をGUIでできる物を探しています。 確かにCSEは重宝しているのですが、他にあれば試してみようかなぁと。 クエリアナライザの様に、MDI的に複数のクエリと結果を表示できるものなら 試してみたいと思っています。
315 :
300 :04/09/12 15:30:39 ID:???
>>314 ベクターでSQLを検索するとそれっぽいのがいくつか出てくるけど
CSE以上のものはあまりなさそう
DBMSを限定すればよさげなのもあるけど、汎用だとあまり無いと思う
う、名前が残ってた...orz
317 :
NAME IS NULL :04/09/12 22:48:37 ID:fIWv22ST
IMEの辞書(〜.dic)をACCESSに取り込むことは可能でしょうか? 可能だとすればどのように取り込むのでしょうか? お願いします。
318 :
Po :04/09/12 23:12:42 ID:tByQwywY
319 :
NAME IS NULL :04/09/13 00:13:28 ID:6euF9AeP
エクセルでひとつのセルに 東北支社 江口 といれたいのですが 東北支 社江口 となってしまいます どうしたらいいですか・
320 :
名前 :04/09/13 01:29:43 ID:tgZuAvPf
>>319 ALT + ENTER でセル内での改行ができる
そうゆう問題ではない?
322 :
317 :04/09/14 01:27:22 ID:GCh/BwST
>>322 ユーザー辞書なら辞書ツールでテキストに出来るはずだけど
システム辞書は無理
324 :
NAME IS NULL :04/09/14 14:02:10 ID:gg6bxN74
LinuxでMySQL4.0.17を設置しています。 phpMyAdminで私と友人がサーバにアクセスして それぞれのデータベースを観覧出来るようにしたいのですが なぜかphpMyAdminを設置したらすべてのデータベースが 観覧出来てしまいます。 webminでデータベースの許可をそれぞれのユーザー名に しているのですが、なぜでしょうか?何か良い方法はありませんでしょうか?
326 :
NAME IS NULL :04/09/14 18:10:49 ID:/ddH8o1C
OleDBAdapterを使用しているのですが、 Fillを実行すると「DB_E_OBJECTOPENがありません」といわれます。 どーしたらいいでしょうか?エラい人! 以下ソース cn = New OleDb.OleDbConnection(cns) adpt = New OleDb.OleDbDataAdapter("SELECT * from hogehoge", cn) dset = New DataSet adpt.Fill(dset, "SELECT")
327 :
名無しさん :04/09/15 18:02:00 ID:k8kWif2E
SQLサーバです。 クエリでSQL文を実行してリレーションを削除したいのですが、 リレーションの名称が不明な場合でも削除できるような SQL文があるのでしょうか? テーブル1(A列,B列,C列) テーブル2(a列,b列,c列) 外部キー:テーブル2.a→テーブル1.A このときSQL文によってリレーションをはずしたいです。
328 :
へたれ人 :04/09/15 22:55:49 ID:pO9Is1vb
MS-Access2003について質問があります。 とあるテキストフィールドに格納されているパス(例:C:\....\テスト.txt)を フォームにあるボタンで 開くように作りたいのですが Docmdなどを 探してみても 該当のメソッドが見つかりません。 目的としては 大量にある文書(Txt/Doc/pptなど)をDBでパス管理し、 必要な時は 「開く」ボタンを押下する...というDBを作っています。 パス情報は格納されているので あとはそのファイルをAccess上から「実行」 させるだけなのですが・・・・。 冴子先生と色々やり取りしたのですが 進展ナシです。 非常に初歩的な質問ですが どなたかお分かりの方いれば 教えてください。 環境:Windows2000 App:MS-Acess2003
>>327 drop table テーブル2
go
330 :
Po :04/09/15 23:14:18 ID:???
おれも328と同じ問題でぶつかって結局解決できんかったなぁ。。。 みんないったいどうやってるんだろ。。
331 :
328 :04/09/15 23:20:54 ID:???
>>330 ああ、やっぱり そうでしたか。
ウィルスとかを自動実行されると困るということで こういう機能は簡単に
は実行でいないようになっているのでしょうか...。
332 :
NAME IS NULL :04/09/16 03:40:21 ID:XsgY9Ucc
新しく会社にパソコン導入するときのシステム管理って どんなところに依頼したらいいんでしょうか? 「カスタマーエンジニア」とかで検索しても、採用情報ばっかり 出てきてよく分からないのです。。 誰か詳しい人がいたら教えて下さい。
>>328 ,330
VBAでshellステートメントを使うんじゃないの?
DB板で扱う内容じゃないだろうから、
わからなければプログラム板かビジネスソフト板へGo
ほんと反対だよなー
335 :
Po :04/09/17 06:35:23 ID:???
336 :
NAME IS NULL :04/09/17 13:25:30 ID:H8218lP1
>>335 私の知り合いが悩んでたのでここで聞いてみたのですが、
どんなシステムかは分からないです。。
たぶん、使うのは既存のソフトで文書作成とかがメインだと思います。
Windowsで、一太郎とかも使いたいらしい。。
小さな事務所で、故障とかのメンテナンスをしてくれるところを探してるみたいなのです。
良いところを探せる検索サイトみたいなのってありますか?
337 :
Po :04/09/18 15:48:37 ID:???
それがデータベースとどう関係しているのかが良く分からん。。。 ファイルサーバを置くシステムにして欲しいとかそういうの なのかなぁ。
>>336 SOHO系で安くやってくれるようなとこ探してみては?
あと場所とかはっきりさせたら、フリーでやってる人とかで請け負ってくれる人がいるかもしれません。
>>336 既存のソフトしか使わないんだったら、業者に頼まないで DELL とか HP とかの
直販PC を買っとけばいいよ。HPなんかだと有料オンサイトサポート契約とかあるし。
そこらの業者に頼んでもメーカーの間に入って仲介してくれるだけで、自発的に
問題分析・解決してくれるところなんてほとんどないよ。メーカーの電話サポートと同じで
「あれを試して。これを試して。」ってひたすら言われるだけ。
うちは小さなソフト屋なんだけど、PC一般の詳細なサポートはできないので、
ユーザーには、ハードウェアメーカーのサポートに入ってもらうようにしています。
昔は間に入ってマージンとっていたけど、レスポンス悪くなるし評判悪かったので。
物凄くツマラソ質問だと思うが、 連番 ID グループ 1 100 A 2 100 B 3 101 C みたいな表がある時に、SQLで 100,AB 101,C のように出す方法ってありますか?
341 :
NAME IS NULL :04/09/21 18:00:33 ID:R8iG8GKj
Apache/1.3.31 + mod_php + php4.3.8 + PostgreSQL 7.3.2 で小規模なデータベースとウェブのゲートウェイを運用しています。 以下のような問題が発生して困っているのですがどなたか 解決策をご存じないでしょうか。 2〜3日運用していると「too many clients」で データベースに接続できなくなってしまいます。 数時間ほったらかしておいても直りません。 postgresql.confのmax_connections、httpd.confのMaxClients、 php.iniのpgsql.max_links値などを調整しているのですが いまいち直る気配がありません。現在は以下のようになっています。 MaxClients 30 max_connections = 128 pgsql.auto_reset_persistent = Off pgsql.max_persistent = 0 pgsql.max_links = 1
342 :
NAME IS NULL :04/09/22 11:17:30 ID:y+gZ3JeN
質問です SQL Server2000からSQL Server6.5が見れない(接続できない)のですが何か特別な 設定しないといけないのでしょうか?もしくは根本的に不可能なんでしょうか? よろしくお願いしますm(_ _)m
>>342 普通に繋がるはずだけどな。
具体的に何をしたくて、何をどう設定したのか、
どういうエラーになったのか書かないと答えようがない
344 :
NAME IS NULL :04/09/22 23:01:32 ID:uHOk+Qns
候補キー(candidate key)についてdateの本で詳しく 調べています。その定義は一意性(uniqueness property)と 規約特性(irreducibility property)らしいのですが、 関係Rに対する候補キー 「Kの真部分集合が一意性をもたない」 の意味がわかりません(理解できませんでした)。 ご教示ください。
すまん。かなり困っているので教えてくれ。 MySql(Ver4.0.20)とPHPを使って40万件のテキストデータを検索するDB作っているんだけど、 キーワードから検索する時のレスポンスがヤバイぐらいに遅いっす。 誰か、MySqlレスポンス上げる方法知らないっすか? 今んとこ考えているのはデータを適当な大きさで分割するぐらいっす。 クグってみたけどイイ!!って方法なかったっす・・・。 イイ知恵ないかな?
>>344 Kが(A,B,C)列からなる場合、その真部分集合である(A,B)や(B,C)で
ユニークになるならばKは候補キーではないということ。
逆に候補キーKに任意の列を追加した(A,B,C,D)も(キーとしては
有効に働くけれども)候補キーではない。
要するに行を一意に識別できる最小の組み合わせが候補キー。
>>346 わかりました!なんかモヤモヤしていたものがスッキリ晴れた感じです。
多謝!
mysqlで何か構築したい。 バイト先の在庫/発注管理みたいなの作ろうか、 情報処理技術者試験のSWやDBの問題をお手本に作ろうか 迷っているYO! どっちがいいとおもふ?
postgresqlにしれ。 サンプルも解説もネット上にイパーイあるYo!
どっちでも大差ないだろ
>>351 Cygwin使えばwindowsでもできるし、
accessからも接続できる。
353 :
NAME IS NULL :04/09/24 11:03:38 ID:kDkdQSOn
すみません、質問です。 クライアントから、「OracleDBからMySQLへの移行を行い、御社へのサーバへの 設置を一週間で出来ないか?」との質問がありました。 これはどのくらいの難易度なのでしょうか? DBの規模としてはかなり小さいものらしいのですが・・・ 当方、DBの知識などほとんどなく、詳しい人に電話入れたら会社消えてたorz ので、 どう返答すれば良いか困惑しています。 どうかお知恵をお貸しください。よろしくお願いします。
354 :
NAME IS NULL :04/09/24 11:40:36 ID:wvIcpsVv
すいませんORACLE初心者です サーバを立てて試しにDB作成しテーブルを試作してみました クライアントからサーバに接続成功したのですが 作成したテーブルを見るコマンドがわかりません 教えてください。
>>354 無理。やめとけ。
データベースを単なるストレージとしてしか使用していないのであれば不可能ではないが…。
たいていは、データベース自体にビジネスロジックを実装している(トリガーやストアドなど)
そうなると、データベース製品の変更というのは、ほとんど不可能だと思ったほうがいい。
データベースの変更が可能なケースとしては、Java などのアプリケーションフレームワークを
用いている場合くらいか。アプリケーションフレームワークを使用している場合は、
バックエンドのデータベースは単なるデータストレージとして使われていることがあるので、
その場合は、データベースの変更も不可能ではない。
356 :
355 :04/09/24 14:31:49 ID:???
978:2ちゃんねるも閉鎖 09/24 14:05 [sage] [sage]
高須クリニック顧問の 宮道佳男弁護士という人物には呆れます。
小遣い欲しさに盗撮盗聴八ッキングを長期にわたり仲間と共に行い(2ちゃんねる管理運営人含む)
被害女性(友人・知人ですらない)
http://nikkan.gaiax.com/home/tubaki_hime/diary の生活・情報を多くの人間に晒し、商用利用し なおかつ被害女性を
「あの人は、仕事で金を受け取って、自分を晒しているから問題ない。
彼女は私を好きで貢いでくれてるくらいだし。」と 周囲に言いふらし捏造工作したのである。
破廉恥悪質極まりない犯行である、といわなければならない。
358 :
353 :04/09/24 18:26:48 ID:???
>>355 御回答ありがとうございます。
内容的にはFlash(のようなもの)から、対戦ゲームを可能にするシステム
の構築なので、不可能ではないと他の方面から言われました。
ただ、その場合でもその納期では受けられないと言われましてorz
これを期に本気でMySQLを勉強してみようかと思うこの頃です。
>>358 これからデータベースを学ぶのであれば、MySQL はやめたほうがいい。
MySQL の安定版では、サブクエリもトランザクションも実装されていないので
解説書などでも、その辺のことは触れられていないと思う。
いまのところ、MySQL は高速な参照を必要とする場合に使うべきものであって、
OLTP が可能なデータベースとは言い難い。
同時に、PostgreSQL とか MSDE を学ぶといいんじゃないかな。
>>354 select
table_name
from
user_tables
で、存在しているテーブルの名称一覧が出てくるよ。
そっから先? は独学してね。
トランザクション管理について、厨房質問です。 トランザクションの持続時間は、どのぐらいまでなら可能なのでしょうか? 具体的には、Webアプリケーションで、あるテーブル内容の一覧を取得して、 それをユーザが部分的に修正して書き込むという作業を排他制御したい (そのユーザがコミットするまで、他のユーザは閲覧のみ)ということなのですが、 これを実現するのにトランザクション制御は使えるのでしょうか? 開発言語はJava, DBはLinux版のMySQLを考えています。 当然、複数回のアクセスになりますが、コネクションオブジェクトをセッションに 登録すれば、接続自体は切れないと思うのです。 それとも、やはりトランザクションはこういう用途を想定してはいないのでしょうか?
362 :
361 :04/09/25 23:45:06 ID:???
あと、トランザクション制御について、きちんと学ぶのに良い資料をご紹介 願えないでしょうか? 今は、TechScore のトランザクションに関する項目を一通り読んだ程度の 知識しかありません。 様々なアクセスモードや隔離レベルを、どのような局面で使うのが有効なのか、 実例で学べるような資料を望んでいます。 どうかよろしくお願いします。
363 :
NAME IS NULL :04/09/25 23:59:55 ID:6qHV0nPR
関係代数のσ制限 π射影 ×直積 −差 ∪和 等の記号は、 誰の何が初出ですか?
364 :
NAME IS NULL :04/09/30 10:38:21 ID:t95dMYw7
LinuxやMacOSXでAccessみたいにランタイム環境再配布無制限なDBって ありますか?もしくは組み込み型サーバで機能限定すれば無制限または 安価に再配布できるものとか? MySQLが好きで使ってるんですが、1本あたり3万なんて払えましぇん
366 :
364 :04/09/30 11:21:25 ID:t95dMYw7
>>365 ありがとうございます。BSDライセンスだったんですね。勘違いしてました。
Firebirdも商用で配布無料だ。
368 :
NAME IS NULL :04/09/30 13:58:24 ID:T4vHrJcd
Oracleですが テーブルA --------- カラムA1 カラムA2 テーブルB --------- カラムB1 カラムB2 というテーブルにそれぞれデータあるとすると、 テーブルAのカラムA1とテーブルBのカラムB1が同じ テーブルAのカラムA2にテーブルBのカラムB2を挿入したい ってときはどんなSQL文になりますか?
369 :
368 :04/09/30 13:59:41 ID:T4vHrJcd
テーブルAに --------- カラムA1:0001 カラムA2:null カラムA1:0002 カラムA2:null カラムA1:0003 カラムA2:null テーブルBに --------- カラムB1:0001 カラムB2:cmnt1 カラムB1:0002 カラムB2:cmnt2 カラムB1:0003 カラムB2:cmnt3 ってある時に、楽にテーブルAのデータに カラムA1:0001 カラムA2:cmnt1 カラムA1:0002 カラムA2:cmnt2 カラムA1:0003 カラムA2:cmnt3 と挿入したい。
not existsだっけ?こんなんでいけるんちゃう
371 :
NAME IS NULL :04/10/01 11:14:46 ID:Nzecy8hf
質問なのですがリーダライタを使って携帯電話のMINI SDのデータをPCへ移しました。 ですがデータが全て見れないです。 例えば、画像だと夕日?のマークは出てるのですがクリックすると「表示できません」 こんな感じです。見れるようにする対処法教えてくれませんか?
>>371 心眼かもしくは脳内視を使うかのいずれかだな。
374 :
NAME IS NULL :04/10/02 00:00:47 ID:UceS/lAX
Oracleで質問です。 アーカイブログファイルが吐き出されている途中なのか それとも完了したものかを調べるのはV$ARCHIVED_LOGの ARCHIVEDが「YES」かどうかを調べればOKなのでしょうか?
375 :
NAME IS NULL :04/10/02 04:57:54 ID:lW1ESirt
おお、ここにも物質が! 記念カキコ
○×で答えてください。 1、DBMSはデータベース(以下DB)に関するユーザ情報、アクセス方法、データ構造などDBを管理する情報も管理している 2、SQLはDB定義、DB操作、トランザクション管理といった機能を有しており、SQLさえあればアプリケーションが開発できる。これがSQLを標準化した理由である。 3、SQLによって既存の表を削除するにはDELETE文を用いる。 4、正規化はリレーショナル型DBへのアクセス効率を向上させるために行うものである。 5、あるリレーショナルのある属性値が、常にある特定のリレーショナルの主キーの値のいずれかに一致しているときに、この属性を外部キーという。 6、企業内のデータは事務内容などが変化しない限りさほど大きく変化しないという考えに基づいて、データ郡の基盤としてアプリケーションの設計を進めるのアプローチがDOAである。 7、トランザクション管理においては、DBへの更新をすべて完了したか、または、まったく更新されないことにする、という考えを取ることでDB内の一貫性を保っている。 8、表(リレーション)に複数損愛する列の中で、キーとなりうる列のことを候補キーとよび、その中で一番左側に位置するキーを主キーと呼ぶ 9、頻繁にアクセスが必要なデータは1台のHDD内に配置したほうがパフォーマンスの面からもデータ保全の意味合いからも望ましい。 10、リレーショナルモデルでは、1つのリレーション内で、各属性は第1列、第2列といった順番で区別がつけられるので、属性名としては重複した名称をつけることが出来る。 以上が課題として出ているのですがよくわからないのでお願いします。
勉強は自分でやれよ。 ノートの丸写しじゃ仕事はできんぞ。
379 :
NAME IS NULL :04/10/03 22:14:19 ID:f+3NbXHa
非第五正規形について調べています。 関係SPJがあったとして S#|P#|J# ======== S1|P1|J2 S1|P2|J1 に S2|P1|J1 を追加する場合、必ず S1|P1|J1 も追加しなければならないと DATEの本に書いてあるのですが、 理由が理解できませんでした。 何故ですか?ご教示願います。
380 :
379 :04/10/03 22:25:48 ID:???
もしかして、結合従属性という一種の制約のようなものが掛かるからですか?
381 :
379 :04/10/03 22:43:20 ID:???
それか、或いは、結合射影の例外を誤魔化す為ですか?
382 :
NAME IS NULL :04/10/04 00:29:38 ID:yt8/2vKl
誰か年金データベースをデータモデリング汁!
>>379 んな質問じゃ誰も答えられるわけないがな。
まずは初心者向けの本を読んで基本を押さえて、意味の通る
質問ができるようになるのが先。
>>381 結合射影の例外って何?
ぐぐっても出てこない用語を勝手に作るな。
質問です。 TABLE1 に二つのキーフィールド FIELD_A, FIELD_B があり、 同様に、 TABLE2 に FIELD_B, FIELD_C TABLE3 に FIELD_C, FIELD_A が存在しているとします。 SELECT TABLE1.*, TABLE2.*, TABLE3,* FROM TABLE1, TABLE2, TABLE3 WHERE TABLE1.FIELD_A = TABLE2.FIELD_A AND TABLE2.FIELD_B = TABLE3.FIELD_B AND TABLE3.FIELD_C = TABLE1.FIELD_C 上のような キーの参照関係が循環している SQL があるとします。 これを JOIN 〜 USING 句を使って書き直すことができるでしょうか?
SELECT ALL * FROM TABLE1 INNER JOIN TABLE2 USING (FIELD_B) INNER JOIN TABLE3 USING (FIELD_C, FIELD_A);
SELECT * FROM TABLE1 NATURAL JOIN TABLE2 NATURAL JOIN TABLE3;
388 :
385 :04/10/04 16:10:38 ID:???
すみません、こちらの DBは MySQL 4.0なのですが、 JOIN区にはその前後二つのテーブルのフィールドしか指定できないようなのです。 つまり、 TABLE1 と TABLE2 の関係、TABLE2 と TABLE3 の関係は指定できますが、 TABLE1 と TABLE3 の関係は指定できないようなのです。 SELECT * FROM TABLE1 INNER JOIN TABLE2 USING(FIELD_A) INNER JOIN TABLE3 USING(FIELD_B) -- TABLE3 USING(FIELD_B, FIELD_C) <-- この行はエラーになる。 他のDBだと問題ないのでしょうか?
(A)(B,C)じゃなくて(B)(C,A)って書いてるのに。
390 :
385 :04/10/04 17:35:14 ID:???
すみません、質問にバグがありました。訂正します。 -- 元のSQL SELECT TABLE1.*, TABLE2.*, TABLE3,* FROM TABLE1, TABLE2, TABLE3 WHERE TABLE1.FIELD_B = TABLE2.FIELD_B AND TABLE2.FIELD_C = TABLE3.FIELD_C AND TABLE3.FIELD_A = TABLE1.FIELD_A -- INNER JOIN USING 句で書き直して、うまく行かないSQL SELECT * FROM TABLE1 INNER JOIN TABLE2 USING(FIELD_B) INNER JOIN TABLE3 USING(FIELD_C) -- TABLE3 USING(FIELD_C, FIELD_A) <-- この行はエラーになる。 環境は Linux 版 MySQL 4.0です。どなたかお教えください。
PostgreSQLだと動くね。
392 :
385 :04/10/04 21:14:30 ID:???
どうやら、MySQL の特殊事情のようですね。 続きは、MySQL総合スレでお伺いしたいと思います。 ありがとうございました。
MySQL・PostgreSQL・Oracle等に共通して役立つ基礎知識を学べる 初学者にお勧めの書籍を教えて頂けますか? レコードと設計の関連について具体的な事例が豊富な物が嬉しいです。
>>394 ごめんなさいスレ違いでしたね。
にも関わらずわざわざありがとうございます。
396 :
NAME IS NULL :04/10/08 12:29:16 ID:P3EYlZIx
顧客番号| 売上日 | 商品番号 | 単価 | 数量 | 0001 | 2004/09/01 | 01 | 10 | 01 | 0001 | 2004/10/01 | 02 | 15 | 02 | 0002 | 2004/09/18 | 02 | 15 | 05 | 0002 | 2004/10/03 | 01 | 10 | 01 | 0003 | 2004/08/05 | 02 | 15 | 01 | 0003 | 2004/09/07 | 01 | 10 | 02 | というテーブルから 顧客番号| 最新売上日 |最新売上日の(単価*数量)| 0001 | 2004/10/01 | 30 | 0002 | 2004/10/03 | 10 | 0003 | 2004/09/07 | 20 | といった一覧を得たいのですが、どうSQLを書けばいいのかわかりません unionを使わずにできないものでしょうか どなたか教えてください
>>396 SELECT 顧客番号, 売上日, 単価*数量 AS 最新売上日小計
FROM 売上 AS S
WHERE EXISTS (SELECT *
FROM 売上 WHERE 売上日 < S.売上日
AND 顧客番号 = S.顧客番号);
not existsで>だろう。
>>399 流石ですね。
SELECT 顧客番号, 売上日, 単価*数量 AS 最新売上日小計
FROM 売上 AS S
WHERE NOT EXISTS (SELECT *
FROM 売上 WHERE 売上日 > S.売上日
AND 顧客番号 = S.顧客番号);
で動くみたい。
401 :
NAME IS NULL :04/10/09 01:41:25 ID:x4p9Bebp
>>379 それは、DATEが用意した第四正規形で、
なおかつ非第五正規形という特殊な例。
通常ではあり得ない。むしろあったら教えて欲しい。
仮に常に非第五正規形で、3分割可能だとすると
S1|P1|J1 を追加すること無しに S2|P1|J1
を追加すると、join-projection anomaly(結合射影の例外)
が発生するから、3分割不可能になるよって話。
402 :
396 :04/10/09 20:56:34 ID:???
>>400 の通りでできました!
皆さんありがとうございました
Oracle 9i環境です。 以下のようなテーブルレイアウトの明細テーブルがあります。 ・テーブル名:明細テスト ・明細番号:number型(PK) ・部門コード:varchar2(3)型 ・日付:varchar2(8)型 ・金額:number型 データ例) 1 ABB 20040401 2000 2 CCC 20041001 5000 9 DDD 20050201 3500 上のようなデータから部門コード別の 2004年上半期の金額合計、2004年の下半期の金額を求めたいのですが どのようなSQLを書いたら良いのでしょうか? どうか、宜しくお願いいたします。
一応、以下のようなSQLを考えましたが。 select 部門コード,sum(decode(substr(日付,1,6),to_char(sysdate,'yyyy') || '04',金額, to_char(sysdate,'yyyy') || '05',金額, to_char(sysdate,'yyyy') || '06',金額, to_char(sysdate,'yyyy') || '07',金額, to_char(sysdate,'yyyy') || '08',金額, to_char(sysdate,'yyyy') || '09',金額, 0)) as "2004年上半期", sum(decode(substr(日付,1,6),to_char(sysdate,'yyyy') || '10',金額, to_char(sysdate,'yyyy') || '11',金額, to_char(sysdate,'yyyy') || '12',金額, to_char(add_months(sysdate,12),'yyyy') || '01',金額, to_char(add_months(sysdate,12),'yyyy') || '02',金額, to_char(add_months(sysdate,12),'yyyy') || '03',金額, 0)) as "2004年下半期" from 明細テスト group by 部門コード
grantでcreate tableはできてcreate databaseはできないユーザーを作りたいのですけど 構文はどうなるのでしょうか? よろしくおねがいします
SQLServer2000を使っています。 例えば以下の様なnamesという表があり、 id name -------------- 0001 田中 0002 鈴木 0003 鈴木 0004 渡辺 0005 NULL 0006 中島 0007 NULL 0008 田中 この状態で select names, count(*) from name とすると name -------------- 田中 2 鈴木 2 渡辺 1 中島 1 という様な出力となりますが、このときにnameがNULLの行についても一緒に表示させたい場合、 どうすればよいでしょうか。select count(*) from names where name is nullとすれば、NULLの 行数だけは得られることまでは行き着いたのですが、一度に出力したいのです…
408 :
407 :04/10/13 03:16:43 ID:???
自己レスで訂正です。 > select names, count(*) from name ではなく、 select name, count(*) from names です。 …なんかもうだめぽ…寝るかな…
409 :
405 :04/10/13 04:23:00 ID:???
名無しさんの集団ですか? nameにNOT NULL制約を付ける。
>>407 意味ワカンネ。おまえの言ってるクエリ流してもそんな結果にならねーし。
本当は group by name とか付けてんじゃねーの? で、group by では NULL も
ひとつのグループとして集約されるはずだし。本当におまえが流しているクエリを
コピペしないと話にならんよ?
412 :
403 :04/10/14 21:54:19 ID:???
神様方、403について叡智をお貸しください。 404は私自身が考えたものです。
>>412 Oracleは知らんので悪いがSQL2000で。
select
部門コード,
sum(case when cast(left(日付,4) + '/' + substring(日付,5,2) + '/1' as datetime) between '2004/4/1' and '2004/9/30'
then 金額 else null
end) as 上半期,
sum(case when cast(left(日付,4) + '/' + substring(日付,5,2) + '/1' as datetime) between '2004/10/1' and '2005/3/31'
then 金額 else null
end) as 下半期i
from
明細テスト
group by
部門コード
414 :
NAME IS NULL :04/10/15 05:06:30 ID:JE/nND7p
データベースに関して議論できるMLとかはないのですか?
416 :
NAME IS NULL :04/10/16 01:13:03 ID:BAyT8NZS
417 :
119 :04/10/16 05:17:59 ID:???
質問させてください。 linuxでデータベースのデータ(テーブルのデータとか)は どこに保存されるのでしょうか?(/etcとか/homeとか) よろしくおねがいします。
質問をさしていただきます。 以下のようなレイアウトのテーブルがあるとします。 社員マスタ 社員番号 給料 部門コード 1 1000 AAAA 2 2000 AAAA 3 3000 AAAA 4 4000 BBBB 5 5000 CCCC 6 6000 CCCC このようなテーブルに対して select 部門コード,sum(給料) from 社員マスタ group by 部門コード having 部門コード='AAAA' っていうのと select 部門コード,sum(給料) from 社員マスタ where 部門コード='AAAA' group by 部門コード って書くのとでは結果は一緒だと思うのですが 意味も変わってくるのでしょうか? くだらない質問で申し訳ありません。
>419 前者の様な having の使い方は普通しない。 前者は group by した結果に対して行を選択しているのに対し、 後者は予め選択した行に対して group by をしていると言う 違いがある。 効率の面からも、後者が有利なのは明らか。 前者は fullscan になるので、仮に部門コードへ indexが付け られていても、indexが使用されない可能性が高い。
>>420 さん、丁寧な解説をして頂き有難うございました。
悩んでいたのがすっきりしました。
423 :
NAME IS NULL :04/10/18 12:13:47 ID:P+UnzwON
テーブル名のスマートな命名規則ってないですか? とりあえず、プリフィックスとして ・マスタテーブルは m ・トランザクションテーブルは t を先頭につけるとか考えてるわけですが。 mItem とか tProduct みたいな感じで。
424 :
NAME IS NULL :04/10/18 16:50:59 ID:xgm/UL43
>>423 まず、m_Itemとかt_Productと_を付けるのがよろしいかと。
で、あんまりテーブル名が長くなるのが嫌ならば、
「テーブル名が15文字以上になる場合は短縮するべし」とかいう掟を作る。
以前、T_001とかT_002と機械的にコードが振られた
環境を見たことがあったけど分かりにくく、
テーブル名間違いという初歩的ミスが連発してた。
(項目名もコードだった。勿論、項目間違い多発)
コード制を採用するのなら機械的に順にコードを振るのはやめて
T_1000番台は顧客データ系
T_2000番台は契約データ系
等と意味を持たせた方が良いかと。
あと、同じDB環境に複数のシステムのテーブルが
共存してる環境も見たことある。
そこでは「AAA_m_Item」「BBB_m_Product」と
テーブル名の頭3文字にシステム名のコードが振られてた。
>>424 ありがとうございます。 タブー
一部のDBMS(accessなど)ではテーブル名に _ は禁忌らしいので、敢えて外してました。
プリフィックスをつけるのはアリ、適宜短縮もOKってことでよろしいでしょうか。
426 :
NAME IS NULL :04/10/18 19:10:30 ID:yHFc1SeN
満期落としを日付をもとに行いたいのですが、どこかによいサンプルあり ませんでしょうか。10カラムDATE型の行があり、日付が切れてたら カラムごとにNULLにupdateしたいのですが、一度に それぞれのカラムの日付をチェック 期間がすぎてたらNULLにupdate と行う方法がわかりません。アドバイスでもなんでも結構ですのでヒント を頂けたら助かります。
>>426 満期落としって何だ? ぐぐっても何も出てこないぞ。
他人がわかるように説明してくれ。
428 :
426 :04/10/19 00:45:22 ID:UfTsZowm
>>427 わかりにくい説明で申し訳ありません。当方も、満期落としでぐぐった
んですが、何も出てこないのでこちらで聞いた次第です。
満期日(購入後3年)が来たら、中の購入日(date型)をNULLにしてリセット
するという意味で使っていました。テーブルは
購入者ID (Primari Key)
商品コードカラム (date)
商品コードカラム (date)
商品コードカラム (date)
商品コードカラム (date)
となっており、商品を購入すると、商品コードカラムにcurrent_dateが
入ります。購入者IDごとに、row(行)データがあり、一人で4つの購入日
を持っています。ただし、3年経過した購入日は全てリセットしてNULLに
します。
これを、ループでやろうとしると、row×購入者ID×商品コード数(4)と
なり、毎度の処理が大きくなる為、何か良い方法がないかと思いお聞き
致しました。至らない説明で申し訳ありませんが、宜しくお願い致します。
>428 漠然としすぎ 随時処理なら設計を見直す必要あるし、 夜間バッチなら件数によっては、書いてある通りの事を 書いてやれば良いし、処理系によっては全カラム、全行 に対して更新してやる必要があるかも知れないが、 一括でできる場合もあるだろうし。
>>428 どこの会社か知らんが、いきなり社内用語を持ち出すな。恥かくぞ。
まだテーブル設計を直せるなら今のうちに正規化したほうがいい。
>これを、ループでやろうとしると、row×購入者ID×商品コード数(4)と
>なり、毎度の処理が大きくなる為
何でそこでループが出てくる?
もしかして1レコード毎に値をチェックして最大(購入者ID)回のupdateを発行するような
コーディングをしてるんじゃあるまいな?
DBMSが明示されてないから断言はできないが、今時のRDBならupdate1回で済ませられるし
indexを張ってテーブルスキャンを回避すれば処理時間も大したことないだろ
431 :
426 :04/10/19 02:47:42 ID:???
>>430 アドバイスありがとうございます。
>もしかして1レコード毎に値をチェックして最大(購入者ID)回のupdateを発行するような
>コーディングをしてるんじゃあるまいな?
まさにおっしゃる通りです。自分でも、これはまずなと思った為、こちらで
質問させて頂きました。
>DBMSが明示されてないから断言はできないが、今時のRDBならupdate1回で済ませられるし
MySQL3.23.58です。まだ、とりかかったばかりでDBの再設計も可能なので、テーブル
の正規化についてアドバイス頂ければ幸いです。何もわからない質問に答えて頂き
ありがとうございました。満期落としですが、もう使わないように気をつけます。
商品購入後3年で満期って・・・
433 :
424 :04/10/19 10:50:40 ID:gIOThPgF
>>425 >プリフィックスをつけるのはアリ、
>適宜短縮もOKってことでよろしいでしょうか。
そうです。私の個人的なやり方ですけどね。
434 :
NAME IS NULL :04/10/19 12:26:54 ID:n+HdS+aT
filemaker developer 7 の英語版を日本語版にするパッチなどはありませんか? どなたか、知っていたら教えてください。
われ?
437 :
NAME IS NULL :04/10/20 08:57:29 ID:CQS7kLeU
438 :
NAME IS NULL :04/10/20 16:31:29 ID:JRxIsqk0
名前 ポイント b1 5 b2 5 b3 3 b4 3 b5 2 b6 1 このようなテーブルに順位づけをしたいのですが 順位 名前 ポイント 1 b1 5 1 b2 5 3 b3 3 3 b4 3 5 b5 2 6 b6 1 こんなふうにするにはどんなSQLを書けばいいのでしょうか?
>438 oracle(8i以降かな?)だったら select rank() over(order by ポイント desc) as 順位,名前,ポイント from テーブル order by ポイント desc,名前 とか
440 :
438 :04/10/20 18:19:48 ID:???
すみません。PostgreSQLなのですが方法ないでしょうか...
>440 できるはず。 ありがちなネタなんで検索すりゃ、ごろごろ引っかかるだろう。
442 :
いなむらきよし :04/10/23 01:10:04 ID:vtT94cT0
確かに俺は奇形だキケー! だからっておまいらに迷惑かけてるわけじゃないキケー! もう俺のことは放っておいてほしいキケー!
お忙しいところ申し訳ありませんが 質問をさして頂きます。 DB:Oracle9i (テーブルA) 部門コード varchar2(10) 年 number 月 number 日 number 金額 number このようなレイアウトのテーブルがあります。 データ例) 1 XXX 2004 10 1 1500 2 XXX 2004 10 2 1800 3 XXX 2004 10 24 1950 4 WWW 2004 10 1 200 5 WWW 2004 10 3 300 取得したいのは 以上ようなデータから部門コードがXXXで 年、月、日が最新のデータの金額です 上のデータでは3レコード目の1950という値が欲しいのですが。
以下のようなSQLを考えましたが、 もう少し賢い書き方はないでしょうか? select mm.金額 from テーブルA mm, (select 部門コード,max(年) 年,max(月) 月,max(日) 日 from テーブルA group by 部門コード) tt where mm.部門コード = 'XXX' and mm.部門コード = tt.部門コード and mm.年 = tt.年 and mm.月 = tt.月 and mm.日 = tt.日
>>444 部門コードが同一で、年月日がそれより大きいレコードが
存在しないレコードを選択する。
それから、フィールドごとにmax()とっても正しい最新日付には
ならないので、
>>444 のSQLは正しい結果が得られない。
>444 select distinct first_value(金額) over( order by 年 desc,月 desc,日 desc) from テーブルA where 部門コード = 'XXX'
>>446 オラクルらしいんで
そんな書き方は無理だろう。
>447 は? Oracleだから、わざわざこういう書き方したのだが。
>>445 さん、ご指摘ありがとうございました。
444のSQLはぜんぜん駄目ですね。。。
>部門コードが同一で、年月日がそれより大きいレコードが
>存在しないレコードを選択する。
これについては言葉では理解できるのですがSQLで書けと
言われたらちょっと。。。
すいません。
>>446 さん、どうもありがとうございました。
情けないことにこういう風な書き方をはじめて見ました。
ちょっと調べて勉強してみます。
あと、以下のようなSQLを考えてみたのですが。
どうでしょうか。
select 金額
from テーブルA mm,
(select 部門コード,
max(年 || to_char(月,'FM00') || to_char(日,'FM00')) yyyymmdd
from test24 group by 部門コード
) tt
where mm.年 || to_char(mm.月,'FM00') || to_char(mm.日,'FM00') = tt.yyyymmdd
書き忘れていたのですが
部門コード、年、月、日で主キーなんです。
上のSQLだとINDEXを全く使わないのでどうかと思うのですが。
あ、where mm.年 || to_char(mm.月,'FM00') || to_char(mm.日,'FM00') = tt.yyyymmdd の後に and mm.部門コード = tt.部門コード and mm.部門コード = 'XXX' が必要でした。
>>449 where
not exists --次のようなレコードが存在しない
( select * from テーブルA
where
部門コード=mm.部門コード --部門コードが同一で
and ( 年>mm.年 or
(年=mm.年 and (月>mm.月
or (月=mm.月 and 日>mm.日)))) --年月日がそれより大きい
)
>>451 さん
存在しないってことでnot existsを使わなければいけないとは
分かっていたのですが、
”年月日がそれより大きい”っていう部分の書き方が分かりませんでした。
この辺りの考え方は別の局面でも使えると思いますので
自分のものにできるようにいたします。
どうもありがとうございました。
質問です。 linuxでMySQL使ってるのですが デフォルトの文字コードを調べる方法教えてください あと、文字コードを変える方法も教えてください。 よろしくおねがいします。
454 :
NAME IS NULL :04/10/27 09:48:48 ID:LFbNK9Cr
AB01C0234が登録されている品番だとします。 これをAB1C234と書いても抽出してくれるような SQL文はどう書けばよいでしょうか。
455 :
NAME IS NULL :04/10/27 11:10:10 ID:Wn0vpavx
映画のデータベースを構築したいのですが、 監督が2人だったり、主要キャストの人数が作品によって違い、 こういうのをどう表現したらよいか分かりません。 ・俳優 俳優インデックス | 俳優名 | 出演作品 とやると 0 |ブラッド・ピット | セブン 1 |ブラッド・ピット | ファイトクラブ となってかぶってしまいますからダメなんですよね? よろしくお願いします。
正規化とか勉強したこと無いので、あまりアテに しないで欲しいけど ・人物履歴 人物NO|作品NO|監督参加フラグ|主演参加フラグ|その他大勢フラグ ・作品 作品NO|作品タイトル ・人物 人物NO|人物名 とかじゃダメなのかな?
457 :
NAME IS NULL :04/10/28 00:20:54 ID:ruwahTUw
>>456 できる感じがします。レスありがとうございました!
458 :
NAME IS NULL :04/10/28 15:51:00 ID:whRuY516
超初心者の質問です。 最近MySQL+PHPを始めたのですが、 こまっています。 insertやselectは普通に使えるようになったのですが、 個人情報保護のためにユーザの登録情報を暗号化して、 insertし、必要な時に復号化して使うようにしたいのですが、 暗号化してinsertはできるのですが、 複合化の方法がわかりません。 MySQLのAES_ENCRYPTとAES_DECRYPTです。 暗号化キーは6文字の英数字を使用しています テーブルはすべてvarcharです。 select * from hoge where = '$userid' で暗号化されたものをselectはできるのですが。 複合化の際、select aes_decrypt($hoge['hoge'],$key) だと複合化されないです。
459 :
NAME IS NULL :04/10/28 16:15:13 ID:81Wfp696
MySQLのORDER BY句は省略不可なのか?省略したらはじかれた。 昇順または降順つけたらうまくいった。即レスきぼんぬ
460 :
NAME IS NULL :04/10/28 21:18:27 ID:nyqWuHEf
btrieveデータをコンバートかけなければならないのですが読み込めず困っています。 バージョンはおそらくBtrieve 6.15 以前のバージョンでDOSベースで動いていたPC からファイルを抜きました。拡張子 btr です。 よろしくお願いします。
461 :
NAME IS NULL :04/10/29 09:18:27 ID:Xo+C4H0K
Accessでもデータベース作れる(と思う)のに なんでSQLが必要なんですか? 社内システム担当で内定取りましたが、 今から何を勉強すればいいのかわかりません。
SQL Server2000のCreateTable文でClusteredの意味を教えてください Create Table aaa( a int default 0 not null, b int default 0 not null, constraint AAA_PK primary key clustered (a) ) プライマリーキーの制約記述ではclusteredは必要ないと思いますが どのような意味があるのでしょうか?
クラスタ化されているとインデックスノードにレコード実体も保持されるので、 Bookmark lookup が発生しなくなる。
>>464 MySQLじゃなくてcgiの問題でわ?
>>465 そ、、そのとおりでした
バーチャルホストでもcgi使えるようにしたら動いたのはいいのですが
mkdirができない。。。
なぜ?
>>466 そこまで分かっていてなお聞くのかね?
ここはデータベース板じゃよ、フォフォフォ
468 :
NAME IS NULL :04/10/31 22:46:19 ID:C+SsJLvn
質問させて下さい。 カラムAに値100があったとして、それから200引くと値-100になります。 これを、0以降全てNULLにしたいのですが(値-を持ちたくない)可能でしょうか? 100 - 99 値 -1 100 - 100 NULL(値0でなく) 100 - 200 NULL(値-100でなく) みなさまお忙しいと思いますが、アドバイス頂ければ幸いです。 どうか、宜しくお願い致します。
>468 自分で書いている通り、 値がマイナスになったら、NULLにすれば良い。 その仕様が許す範囲の、好きな方法で。 トリガーを使うにしろ、選択時にそう表現するにしろ、 更新時に操作するにしろ。
470 :
468 :04/10/31 23:24:17 ID:???
>>469 出来れば、updateで一度に処理したかったのですが、トリガーなり
使うしか方法がないようですね。ありがとうございました。
>>470 トリガー使えば、UPDATEで一度に処理できるじゃん・・・
>>470 DBMSによるかもしれんけど、SET句の中でCaseを使えれば
トリガなしでもUPDATE1回で処理できる。
しかし、NULLを入れてしまうと値を足す時が面倒になるけどそれでいいのか?
普通の計算式だとNULLに何を足しても掛けても結果はNULLだぞ。
474 :
NAME IS NULL :04/11/01 23:58:33 ID:y0xPwxbI
Win2000サーバ DB専用 なんですが、今日いきなりウィーーンってファンがものすごい 勢いで回りだしたかと思ったら、画面にダイアログで 「あと60秒でシャットダウンします」とでて カウントダウンがはじまってクレズ?ニムダ?みたいな動作したんだけど あれはなに?? クレズ以外で
475 :
NAME IS NULL :04/11/02 00:00:06 ID:ZStcC7sr
ちなみに1回なっただけで あとは症状でず
477 :
NAME IS NULL :04/11/02 07:25:38 ID:HTd73Aav
アクセスを使っていて、現在は一つのテーブルで 会員テーブル 会員ID,名前,住所,..他..,試験A,試験B,試験C...試験G となっていて試験項目7(全体で20ほど)があるのですが、 来年から 試験A1,試験A2,試験B3,試験B1,試験B2,試験C1... のように細分化されて試験項目だけで50を超えることになりました 試験項目はTrue/Falseで合否をあらわしています 処理も重たく感じるようになってきていますし、これを機会にテーブルを 分けてみようかと思って正規化とか検索してみたのですが 会員テーブル 会員ID,名前,住所,..他.. 試験合否テーブル 会員ID,試験A1,試験A2..,試験B1,試験G1..試験G8 こんな感じでいいのでしょうか? なんか検索しても商品売上とかが多くてなんか今回のとは違うような気がして よく分かりません ご教授いただけるとうれしいです
>>477 会員テーブル
会員ID,名前,住所,..他..
試験テーブル
試験ID,試験名
試験合否テーブル
会員ID,試験ID,結果
479 :
477 :04/11/03 06:27:36 ID:???
>>478 レスありがとうございます
なんというか、目から鱗です。。
書き込みしてからも自分なりにやってみて、繰り返し項目を排除しなければいけないと思って
試験テーブルA1(会員ID,結果)
・
・
試験テーブルG8(会員ID,結果)
というようにテーブルをどんどん作っていくのかなとも思っていました、、、
以前に検索したサイトなどにも同じようなやり方が書いてあったんだと思います
こうやって教えていただいて、あーこうやるんだ、と考え方を変えると、
やっと同じに見えてきたという感じでしょうか
ほんとうにありがとうございました!
質問です。 ASAからASEへDBのコンバートを行いたいんですがイイ方法が見つかりません。 ご存知の方いらっしゃいましたらよろしくお願いしますm(_ _)m
>>480 イイ方法が見つからないってことは、なにか悪い方法は思いついた??
だったらそれを書いてみたらどうよ
( ´,_ゝ`)プッ
すみません。すごいお馬鹿な質問なのですが 真剣に困っています。教えてください。 telnetを使おうとしているのですが、半角英数字入力の状態で、\が 何処にあるのか分らないのです_| ̄|○ キーボードのどれを押したら\が出るのでしょうか。
484 :
483 :04/11/21 03:11:40 ID:6JCa8euH
すみません。sageてしまいました。上げます。 どなたかよろしくお願いいたします。
485 :
NAME IS NULL :04/11/21 09:32:20 ID:mHOHnzCm
オッケェー、この板も刻んだ!
486 :
NAME IS NULL :04/11/21 17:24:05 ID:pnpy18KG
487 :
340 :04/11/21 19:30:45 ID:???
MySQL板で2回質問をしたところ、2回ともスルーされたのですが、 死ぬべきでしょうか
>>487 死ななくてもいいけど、回線切ってつr(ry
489 :
483 :04/11/22 00:02:00 ID:RC2l+T/+
お願いします〜〜 真剣に悩んでるんです。 どなたか/の半角の出し方を教えてください〜〜
>>489 /の半角は\だ。日本語フォントだとみんなそうなる。
板違いの質問だから続きはPC関係の板で聞いてくれ。
cygwinにdaemonは動くのにpostgresがインストできない postgresはコンパイルはできたのに。 環境はwin2k,cygwin1.5,cygipc1.15,postgres7.45です
492 :
483 :04/11/22 01:15:33 ID:???
493 :
K :04/11/22 13:32:17 ID:???
すいません。教えてほしいんですけど sql = "SELECT COUNT(*) As fldRecordCount, fldDate, fldTime, fldSubject, fldContents, fldAlarmSet, fldAlarmTime FROM tblSchedule " & _ "WHERE fldDate=(SELECT MIN(fldDate) FROM tblSchedule " & _ "WHERE fldDate>=" & Format(Now(), "yyyy/mm/dd") & ") " & _ "ORDER BY fldTime;" これのどこが間違っているのかおしえてください。 実行すると 'System.Runtime.InteropServices.COMException' のハンドルされていない例外が PC.exe で発生しました。 追加情報 : 集計関数の一部として指定された式 'fldDate' を含んでいないクエリを実行しようとしました。
494 :
NAME IS NULL :04/11/22 18:38:22 ID:j6017wAa
count(*) の時って、まさに集計だから データを取る事できないんでない? 多分やりたい事はある日付以降のスケジュール全部取る、だろうけど 1つのSQLでやりたいなら・・・どうするんだろ(ノ´∀`;)
Windows認証利用のみでMSDEをインストールしてしまったんですが、 SQL認証利用の指定は後から追加できないんでしょうか?
>>493 エラーメッセージを噛み砕いて説明すれば
集計関数を使うときは集計関数以外にSELECTしたいカラムを
GROUP BYで指定しろということ。
この場合、GROUP BYをつけても望む結果は得られないだろうから
COUNT(*)を取り除いて、件数をクライアント側で取ればいい。
.NETはよく知らんのだが、RecordSet内にRecordがいくつあるかという
プロパティーがあるんじゃないの?
えーっとほら、ほとんどの処理をオンメモリでやってオラクルのXX倍速いです!とか言ってるDBあったじゃない あれの名前忘れちゃったのよ。 えーっと、えーっと・・・・教えてください。
498 :
493 :04/11/24 13:45:51 ID:???
どなたか物凄い勢いで答えてくださると幸いです。 例えば、 アクセスログを取るテーブルをイメージして頂きまして、 順次、日時やリファラー、ユニークチェックの結果を 'ユニーク' または 'ユニークじゃない' として アクセスのある度にinsertしているとします。 このテーブルに対し、 select リファラー, count(*) from アクセスログ group by リファラー; とするとリファラー毎の総アクセス数が取得できます。 select リファラー, count(*) from アクセスログ where(ユニークチェック = 'ユニーク') group by リファラー; とするとリファラー毎のユニーク数が取得できます。 そこで、 上記の結果を合わせた結果を取得するにはどうしたら良いのでしょうか? つまり、 リファラー1 | 総アクセス数| ユニーク数 リファラー2 | 総アクセス数| ユニーク数 ・ ・ として取得したいと考えてます。 count関数のドキュメントを漁ったり、 列選択に リファラー, count(*), count(ユニークチェック = 'ユニーク') など を勝手にいろいろ放り込んだりしましたが無理でした、、。 三日三晩悩みつづけ、心身ともに限界を感じております。 どなたかご教授くださいませ。後生です。
総アクセス数のSQLをViewにして、ユニーク数のSQLと結合。
501 :
NAME IS NULL :04/12/01 19:55:55 ID:XikxpBIJ
ものすんごい勢いで答えてくれるとありがたいです 表AのAと表BのAを結合してその結果を足したいのですが。 表A 表B a a ---------- ------------ 1 1 2 2 3 3 select sum(A.a)+sum(B.a) from A,B; っとやると導きだしたい答えと違うものが返ってきてしまいます。 この場合だと12が返ってきてほしいのになぜか36と返ってきてしまいます どうすればいいのでしょうか?
UNIONしてからsum
SQLサーバからMDBにレコードを流す場合のことで教えてください SQL側には1つのメインテーブル+複数の参照テーブルがあります それをMDBテーブルAに流していますが、どうしてもカーソルを まわして放り込む形になってしまします。 データセット取得はなんとかjoinやunionやiif関数などで一括取得で きましたが、MDBにほうりこむ時だけカーソルになってしまいます 僕としては、できるだけ回さないにこだわっているのですが ほかの方のこだわりが聞きたいです。
504 :
あみ :04/12/02 01:20:54 ID:+hxOlY8h
誰か教えてください SQLでNOT INを使うと結果おかしいみたいなんです。 なにか注意点ってありますか?
505 :
あみ :04/12/02 01:23:02 ID:+hxOlY8h
データベースはOracle9iなんですけど、 項目 not in('A')とかってして Bの項目がとれないんです!
これからデータベースを作ってみようと思っています。 文書ファイルの文章やインターネット上の文章をドラッグして選択し、 右クリックメニューから選択文字列をデータベースで検索ということができるものにしたいのですが Access VBAで右クリックメニューに「データベースから検索」というようなものを追加する事はできますか? 是非教えてください。
>>502 UNIONしてからSUMはどうやればいいのですか?
UNIONは
select a from A.a
union
select a from B.a
ここまでわかったのですがこの後がさっぱりで・・
そもそもAとBのテーブルをFROMに書いただけで、結合条件なしじゃまともな検索結果は出ないぞ。
できたっぽい select sum(a) from (select a from test1 union all select a from test2) こういうことでいいのかな?
PostgreSQL 7.2.2 です。 どでかいテーブルのうちごくわずかを頻出データとして登録し、 select * from hugetable where code in (select code from freqcodes) てなことをやりたいのですが、これって hugetable の各行をいちいち評価するんで遅いのです。 hugetable.code は主キーなんで、 select (select id from hugetable where code = freqcodes.code) as id, (select name from hugetable where code = freqcodes.code) as name ... from freqcodes みたいに逆にすれば高速だと思ったんですがこれはこれで query がバカ長い。 いよいよとなれば仕方ないですが。 あるいは一回 freqcodes の内容を持ってきて、各行からクエリをいちいち作るしかないんでしょうか? select * from hugetable where code = 'XXX'; select * from hugetable where code = 'YYY'; ... まぁ速さは2番目の例に近くなりましょうが・・・ できれば一つの select (最終的には view) にしたいのです。 それとも新しい psql は頭が良くなっているのでしょうか。
>>510 select * from hugetable inner join freqcodes on freqcodes.code = hugetable.code
はダメ?
発注票みたいなものをデータベースで扱いたいんですが、 こういうような、可変長なデータ(人によって買う商品の種類が違う)ってどう扱えばよいのでしょうか?
513 :
512 :04/12/02 23:13:14 ID:???
↑mysqlです。
>>512 とりあえず本を読んで、「正規化」について学べば書いてある。
いろんなurlの入った列があるとして、 ?より以前を対象にgroup byしたいのですが良い方法はありますか?
516 :
NAME IS NULL :04/12/03 10:21:34 ID:/7tW9Oyq
すみませんが質問させてください。 ある組織のデータを格納したテーブルと、 組織の合併を記録しているテーブルがあります。 ある年月である組織のデータを検索したときに、データがなかった場合には、 合併履歴を参照して、その組織が合併した経緯があったとき、過去の組織名で データを検索していくようなSQLを作りたいのです。 しかし何度も合併した末に出来上がった組織の場合にもどんどん遡って、合併の元となった 組織のデータを取得したいのですが、いい方法はないでしょうか? 例をあげると、 組織ごとのデータを格納しているテーブル⇒DATA 組織の合併履歴テーブル⇒GAPPEI DATA 組織 年月 金額 ---- ------ ---- A 200403 15 B 200403 15 D 200403 50 C 200404 30 D 200404 100 E 200405 130 GAPPEI 組織 合併年月 旧組織 ---- -------- ------ C 200404 A C 200404 B E 200405 C E 200405 D として、組織Eについて年月200403のデータを検索すると DATAテーブルには200403時点のEのデータはないので合併履歴テーブルを 参照して、 組織 年月 金額 ---- ------ ---- A 200403 15 B 200403 15 D 200403 50 という結果が返ってくるようにしたいのです。 文章が長くなってすみません。 どなたか教えていただけないでしょうか。
>>516 SQL99に再帰QUERYが定義されてるけど実装は見たことないなぁ。
無制限に階層も遡る必要があるならストアドかプログラム側のロジックで処理すること
になる。有限階層なら外部結合をつかったSQLでやれなくはない。
問題はその遡り処理が特別で一時的な処理、いわゆるアドホックな処理かどうかだろうか。
いろんなところで遡りの処理が頻繁に発生するなら現在組織をあらわすフィールドを
DATAテーブルに追加し、合併時に最新の値に保つようにしたほうが効率がいい。
ただしこの方法だと過去時点を起点にした場合も常に現在の組織をもとにした結果が
表示される。どちらが良いかは業務内容によるから検討は必要だ。
再帰QUERYの実装されたDBなら知ってるが、使い道がわからん orz
519 :
516 :04/12/04 16:47:00 ID:???
>517 516です。 遡る階層は無制限になりそうなんです。 そうするとやはり、プログラムでSQLを作成するしかなさそうですね。 というかそれが一番楽な気がしてきました。 ありがとうございました。
520 :
まったくの素人・・ :04/12/08 02:50:34 ID:VL/acGL4
WINXPにてSQLServer利用して 業務データーの管理をしています。ソフトは外部でつくってもらったものです。 メインのPCにインストールしてありほか数台のPCからアクセスできるような構成なのですが 先日ブレーカが落ちてしまいそれ以降 メインのPC以外からのアクセスでは [ODBC SQL Server Driver][DBNETLIB]SQL Server が存在しないか、アクセスが拒否されました SQL Serverエラー '80004005' のような内容のエラーがでてソフトを起動できません。 対処法ご教授ねがいます!
>>520 DHCPでIPがかわったんじゃないの?
興味アル方メールください 業務内容 サーバ・アプリケーションの設計・開発・運用・保守管理などの業務に取り組んでいただきます。 資 格 学歴不問25〜40歳位迄、下記項目中2項目以上の経験者が望ましい。 Java開発経験者(Tomcat等のJakarta Projectを利用した開発) DB開発運用経験者(Oracle,PL/SQL,Pro*C,MySQL,PostgreSQLを利用した大規模DBの運用・開発経験者) Linuxサーバの構築・運用経験者(bind,sendmail,qmail,ネットワーク一般、セキュリティ設定等) システム開発プロジェクトマネージャー経験者 勤務地 東京都渋谷区
>>520 メイン以外のPCからメインPCにpingは通るか?
メインPCの共有ディスクなどは見れるか?
最近設定の変更はあったのか?
これまで通常の手順で電源を落とした場合は大丈夫だったのか?
動的に設定を変えてそのままにしてたとかありがちだけど、
HUBの電源が落ちたままとかいうオチもありえるな。
524 :
まったくの素人・・ :04/12/08 05:34:53 ID:u5/WgEfy
>523 今日、Ping試してみます。 設定変更はありません。 今まで電源落としたことがないそうです。 電源を落とさないように言われておったようで・・・ 通常の手順というものを知りたいです。 参考になりますアドレスでもありましたらお願いします! ブレーカー落ちた後にネットへの接続もメインのPC以外からはできなくなっておりました。 ADSLルーター→HUB→PCと順に立ち上げて後どのPCからも接続できるように なりました。 おそらく>521さんのおっしゃるDHCPでIPが変わってしまった・・ ということのような気がします・・ぇぇ気がするだけです・・w SQLサーバーでのクライアントのIP設定などがあるのでしょうか? 方法が知りたいです。 参考になりますサイトなどありましたら。是非にお願いします!
>電源を落とさないように言われておったようで・・・ ひどい業者だな、呼びつけていいレベルだ(笑) >通常の手順というものを知りたいです。 普通にWindowsのシャットダウンで、それ以外の手順が必要なら 普通なら業者が手順書を準備するだろう。起動手順も同じ。 しかしDHCPの環境でIPアドレスをじかに使うかなぁ? >SQLサーバーでのクライアントのIP設定などがあるのでしょうか? >方法が知りたいです。 SQLサーバーにはないですな。IPが勝手に変わらないように Windowsの 設定をDHCPからマニュアル設定にかえるって話だと思いますよ。
526 :
まったくの素人・・ :04/12/08 06:55:30 ID:u5/WgEfy
>525さんありがとうございます。 詳しくは知らないのですが、ちゃんとした業者さんとはちょっと違うのかもしれません。 つまらない事で連絡して迷惑掛けないように・・との話で私が呼ばれました。。 私が迷惑なんですがwまぁ勉強になるかなぁと・・ 昔。WIN2000の話ですがメインから立ち上げて後クライアント、落とす時は逆。 みたいな話を聞いたことがあります。う〜ん仕様によりますよね・・ DHCP環境下ではクライアントのIPを固定させておくということですね ADSLルーターからハブのみの経由で格PCにつながっておるようです。 この場合、各クライアントPCのWindowsでIPを設定すればよい?ということですか? これならSQLサーバーが接続を許可(?)しているIPを調べてそのIPに設定する という理解でよろしいでしょうか? 何が誤解してるようなことがあるような気もするのですが・・^^; 後ちょっと気になったのが。「電源を落とさないように」という話です。 理由がひょとしてDHCPによってIPが変わってしまうから?? などとおもいましたがいかがでしょうか?
527 :
まったくの素人・・ :04/12/08 06:58:04 ID:u5/WgEfy
うだうだとすいません。 抜けてました。。 >これならSQLサーバーが接続を許可(?)しているIPを調べて 調べ方ありますよね?ちょっと探してきます!
IPが変わったかどうか、そのことが影響しているかどうかは予想の域を 出ないので、下手にネットワークの設定を触るとさらに事態を悪化させる 可能性があります。 業者が「電源を落とさないように」といっている以上、電源が落ちてしまった 場合の責任分担は業者にあると判断していいと思います。 電源やLANケーブルの断線がないことが確認できれば、もはや「つまらない事」 という事態ではないということで良いでしょう。
>528 その通りですね^^;; ちょっと素人が手を出せる域じゃないですね・・ 今回はそのように話して済ませようと思います。 ちゃんとネットワークやらDBやらプログラミングについて 勉強してみようと思えた貴重な機会でした。 もういい年なんで趣味としてですがw 皆さんどうもありがとうございました
>>526 >DHCP環境下ではクライアントのIPを固定させておくということですね
逆です。通常サーバは固定IPで運用するものです。ただDHCPで起動ごとに
IPが変わっていたとしても、ホスト名でアクセスする場合には通常は大丈
夫だと思います。
これも推測になってしまうのですが、メインPCでSQLServerは起動されて
いるのでしょうか。まさかと思うのですが、手動起動になっていたりしま
せんか?
実はDHCPではなく、XP SP2のせいだったり・・・
オラクルで、SELECT TABLE_NAME FROM USER_TABLES; とやるとログオンユーザの所有するテーブル名が取得できますが、 MSのSQLServer(2000)で同様のことをやるにはどうしたら よいでしょうか。
>>532 sp_tables
sp_tables @table_owner = 'xxxx' (ユーザー指定)
結果セットを返すストアドだからOracleから来ると戸惑うかもね。
534 :
NAME IS NULL :04/12/10 16:22:51 ID:GTVCQoEL
テーブルを開くとき、fieldの中にあるNULLの行だけ読み込ませないような SQL文を作りたいのですがどのようなSQL文になるのでしょうか? ちなみにVB6、Accessを使ってます。宜しくお願いいたしますm(__)m
>>534 WHERE field IS NOT NULL
18文字の文字列を格納するのに10バイト必要ってどういうことですか? 1文字1バイトじゃないんですか?
537 :
NAME IS NULL :04/12/10 22:04:53 ID:8mF6v/tL
>536 誤爆? パック形式の数字なら18桁で10バイトかな。+−のサインで4Bit使うからね。
539 :
NAME IS NULL :04/12/14 13:14:20 ID:88blfdAK
CHARに0x00-0x1F の制御コードは入れちゃマズイですか? SQL埋め込み型プログラムなら出来ますよね?
>>539 改行コードとか普通に入れると思うけど、0x00なんてなんのために入れるの?
541 :
NAME IS NULL :04/12/14 13:38:23 ID:88blfdAK
4バイトのバイナリデータを格納するつもりです。 ただ、探索条件で使いたいのでイメージデータ扱いしたくない。 やっぱり、CHAR(8)で16進文字列表現にした方が いいんでしょうか? プログラムはバイナリデータとして意識するので、文字列として扱うつもりは無いです。
データベースとクライアントで文字コードの変換が発生することが あるから処理系依存かな。 4バイトなら32ビットintegerじゃだめなの?
char binary じゃいけないのかな?
>>543 MySQLの機能ですね。char binaryは大文字小文字を区別して比較する
ってヤツじゃないですか?
545 :
NAME IS NULL :04/12/18 19:41:01 ID:04BmE0Ty
質問させて下さい 自鯖にApache+PHP+MySQLを入れて動かしてます。 外部ユーザがユーザー登録などにPHPのURLにアクセスしてSQLに更新をかけてます。 比較的まともに動作しているのですが、PHPに不慣れなもので SQLのアクセスをPHPからC言語に移植することを希望しております VisualCでコンパイルしたexeファイルをApacheのサーバー上で 動作する所までは出来たのですが、MySQLをCから制御する方法がよくわかりません MySQLをWebサーバーを経由しないで直接外部から制御するCプログラムは書けます ( mysql.h と libmySQL.libを使用) Winsockの知識は若干あるのですが、どうもCGIの動作原理をよく理解してないらしく つまずいております。 質問するべき板がDBなのかプログラムなのかネット関係かさえ悩んでしまいました 誘導でも参考サイトでも構いません どうかアドバイスお願いします
546 :
545 :04/12/18 20:26:02 ID:???
すみません自己解決しました お騒がせしてすみません
548 :
545 :04/12/19 01:08:19 ID:???
鯖の実行モジュールでなく クライアントのローカルURL叩いて動くはずもありませんでした 回線切って首tskdjlうぁなにをsるやめrsdぁz;k;ぅslj・・・
549 :
NAME IS NULL :04/12/22 15:00:59 ID:fLvrOwza
いくつか質問があります。 A,WindowsNT+Oracle B,TurboLinux8Server+PostgreSQL C,クライアントPC WindowsXP D,クライアントPC TurboLinux10D 定期的に完全に自動でAのOracleのデータをBのpostgresqlに バックアップしたいのですが、可能でしょうか? 可能ならば具体的にどういった方法で可能でしょうか? モジュールのunixODBCを利用して、BにAのデータベースを参照するPerlスクリプトを組みました。 クライアントC,Dは正常にAのデータベースを参照することは可能でしょうか? これはクライアントPCのWindwos+CYGWIN上では正常に接続できたのですが、スクリプトをLinuxにアップロードし 接続してみたところ、エラーが出てしまいました。 Linuxに正常にunixODBCの設定が出来ていない事が原因でしょうか? いずれもLAN内でファイヤーウォールなどはありません。 hosts.allowもALL:ALLとしています。 詳しいかたおられましたら教えてください。m(_ _)m
550 :
NAME IS NULL :04/12/22 15:11:48 ID:VdyoeUI5
質問させて下さい。 緯度と経度をPostgreSQLで管理したいのですが、 この場合、どのようなデータ型ないし構造を用いたらよいでしょうか?
551 :
NAME IS NULL :04/12/22 15:41:03 ID:OqGxSayv
>>551-552 レスthanks。
ぐぐってはいるのですが、どれも小数点や角度を扱うものばかりで、
何度、何分、何秒
といった形式でデータを格納できません。
たとえば、intの配列を格納する事で代用できるのでしょうか?
>553 時刻型でやったら? intervalあたりなら、時分秒で好きなように指定できると思う。
555 :
550 :04/12/22 17:53:01 ID:???
>>554 結局、ドメインでdegrees、minutes、secondsを定義することにしますた。
Thanks anyway.
556 :
NAME IS NULL :04/12/24 14:02:47 ID:4+pQOxez
MS-AccessXPフォームで入力したいんよ。 そこまではできるんだけど、プログラミングの引数風に書くと、IDの部分で自動的に"WA"+year+month+data+iっていうふうにしたいんだけど、どうしたらいい? 参考サイトでもいいのでおせーてください・・・。 ちなみに、フォームで入力するとき、今日が2004年12月24日で2個目の入力だとすると WA20041224002 みたいに、したいんよ。
MS-Accessつかってます。 主キーのフィールドを数値型にした場合、主キーを自動で生成する 関数を自作する必要があると思いますが、その場合、 以下のようなSQLを使用すれば良いと思います。 SELECT MAX(番号) FROM 売上 テーブル名:売上 主キーのフィールド名:番号 しかし、この方法はデータベースを使用していくにつれ、 「番号」の値がどんどん膨大になっていくという欠点をもっています。 これ以外に良い方法はないのでしゅうか。よろしくお願いします。
>>556 mid$()とかformat()とかを使ってもだめだったって意味?
559 :
556 :04/12/25 23:59:23 ID:???
そういうコマンドの使用方法がわからないんです・・・。 参考サイトでもいいのでご教授いただけるとありがたいです・・・。
>>559 これらはコマンドではなく、関数。
関数の使い方はヘルプに載ってるじょ。
561 :
556 :04/12/26 10:00:46 ID:???
>>560 ヘルプに載ってますか・・・。調べてみますわ。
ありがとう!
素人丸出しの初歩的な質問ですいません。 特にどこのDBとは限定しませんが、一般的にレコード中に、時々人数が増減 するような可変長の名簿を置くことは可能でしょうか。 基本的にレコードは定義したら、どのレコードも常にバイト数は同じであると 思っていますが、例えばプロジェクト毎の人間の稼動をDBに記録するような 場合、最初のレコードの定義時に人名を100人分確保したとすれば、1人しか 登録していないときは99人分のスペースが無駄になり、101人登録しようと しても、1人ははみ出てしまいますね。 このような場合は、どのようにレコードを定義するのが定石なのでしょうか?
根本的なRDBMSの概念が分かっていないようですね。 それともまさか、テーブルの列を人数分の100個用意するとか?
564 :
562 :04/12/29 00:57:38 ID:???
できれば、「共通の名簿IDと名前のIDを含めたレコードを 名簿として別個に定義するのが定石だ」とか答えてくれるとベスト。
TABLE Project { ProjectID (PM) ProjectName ... } TABLE Employee { EmpID (PM) Name Department ... } TABLE EmployeeInProject { ProjectID (PM) EmpID (PM) } じゃあこんな感じにしたら。
566 :
562 :04/12/29 02:29:47 ID:???
>>565 なんとなくソレがよさげですね。サンクスコ。
よくわかりませんけど。
567 :
NAME IS NULL :04/12/29 13:00:39 ID:btSOVyaW
1つのトランザクション内でCommitしないままで あるレコードをDeleteした直後に、 そのレコードをSelectした場合、取得は可能ですか? その後、同じ値でInsertしても大丈夫なのですか?
BEGIN TRANS DELETE record A SELECT record A ってことか? もちろん不可能。 それが可能だったらメチャクチャになる。
569 :
name is null :04/12/30 23:59:13 ID:v92yogjU
初心者の質問ですが、お願いします。 テーブルやフィールドの名前のつけ方は、他のテーブルや フィールドと同じにならないようにすべきなのでしょうか。 例えば、以下のような名前の付け方は問題あるのでしょうか。 テーブル「社員」 ・ID ・氏名 ・性別 テーブル「性別」 ・ID ・性別 複雑なSQL文を使い始めてからエラーが出て、このあたりのこと が原因のようなきがしましたので質問してみました。 どうぞよろしくお願いいたします。
フィールド名は他のテーブルと同一でもいい。 SQLの中でフィールド名を書くときにテーブル名も指定できる。
571 :
NAME IS NULL :04/12/31 14:11:47 ID:RSvtQs0O
Windows2000でMySQLを試してみているのですが、 データベースの作成からデータの挿入までを書いた createdb.sqlというスクリプトを作って↓のように実行してみたところ、 c:\mysql>\mysql\bin\mysql -u root < createdb.sql ファイルが見つかりませんとエラーが出ました。 これはどこのフォルダにおいて置けば良いのでしょうか。 SQLの入ってるいろいろなフォルダに試しに置いてみたのですがダメでした。 今さっきsqlを始めたばかりで、コマンドプロンプトの書き方とかも良く知りません。 SQLの方で置く場所などが決まっているのか、もしくは コマンドでディレクトリの指定などをすればどこに置いても良いのでしょうか? とすればどのように書けばよいのでしょうか。 教えてください。よろしくお願いします。
572 :
NAME IS NULL :04/12/31 18:25:05 ID:fVMJh0Ta
>>571 mysql> source c:\createdb.sql
は、試してみたの?
573 :
571 :04/12/31 21:48:18 ID:RSvtQs0O
>>572 まず、
>>571 の4行目は以下の間違いでした。すいません。
mysql>\mysql\bin\mysql -u root < createdb.sql
で、教えて頂いたようにドライブ直下に置き、
mysql> source c:\createdb.sql
と打ってみましたが、
ERROR 2005: Unknown MySQL Server
というようなエラーが大量に出ました…
これはどうすればよいのでしょうか。度々すいませんがよろしくお願いします。
ちなみに関係あるのか分かりませんが、MySQL自体は現在読んでいる
「javaMySQLTomcatで始めるサーバーアプリケーション開発入門」っていう
本のCDに入っていた物で、setup.exeでインストールしたものです。
特に何も設定とかしておりません。
574 :
NAME IS NULL :05/01/01 00:09:30 ID:UnBz74uX
>>573 そのCDは持ってないが、そのエラー番号は、
「サーバ名が正しくない」という意味だ。
サーバ名などの設定を確認してみてはどう?
あ、2005年おめでとう。w
575 :
detabaseしろうと :05/01/04 03:11:42 ID:31maQ+ra
ものすごい勢いで教えて欲しいのですが、 テキストファイルをデータベースにしてVBでDOAのデータベースプログラムを 造ってるんですが、 同じテーブルを異なるテーブルであるかのごとくSELECT文を作る場合、 参考書では、 Select◎◎◎.■■■,Dummy.■■■ From ◎◎◎,◎◎◎ (as) Dummy でクエリーが取れるというふうに書いてあります(as部分はあってもなくてもいいのかどうか分からないけど) ところが、これがうまくいきません。 「◎◎◎は、FROM句の複数のテーブルを参照しました」 とかなんとかのメッセージが出てしまいます。 たとえばアクセス(MS)のSQL文だとOKでも、 VBの中でSQLを記述してみると、FROM句のテーブル名が、 「◎◎◎.txt」となってしまうので、ピリオドがうまく認識されていない と考えられます。 仮にこれを「◎◎◎#txt」としても、通常のクエリーは作動しますが、 上記同一テーブルとみなす処理の上では、「#」が「日付リテラル」と 認識されるようで、「日付」に関する記述エラー警告メッセージが出現して これまたうまくいきません。 テキストファイルのデータベースでは、こういうことは制限があるのでしょうか? 分かりにくいかもしれませんが、どなたかエロイ人教えてください!
576 :
NAME IS NULL :05/01/05 23:40:32 ID:3/u8KLdq
postgresで下のIDをいくつかupdateしたら テーブル「果物」 ・「ID」主キー ・「野菜」 上書きしたデータがselect文ですんなりと出てこないんですが どうしてでしょうか、ものすごい勢いでお願いします
>575、576 もう少しわかりやすく状況を説明してくらはい。 物凄い質問に勢いで答えるスレってふいんきになってきました。
578 :
575 :05/01/06 13:09:03 ID:xNYa/ivL
VBでカンマ切りのテキストファイル「data.txt」をテーブルにしています。 これは「\base」というフォルダに入っているので、 その旨で 「dtb」という名前で でデータベースを設定。 これのレコードセットを取りたいわけです。 テーブル「data.txt」には、 ID,hi,nam,money 1,04/05/08,A,1000 2,04/05/09,C,1500 3,04/05/10,B,4000 4,04/05/11,X,2400 という具合にデータが入っています。 これのレコードセットとして、 ID,nam,(ID+1のnam又はmoney) を取得したいわけです。 すなわち、 1,A,C,1500 2,C,B,4000 3,B,X,2400 というふうに。 これを、 Set recset = dtb.OpenRecordset("select data.txt.ID , data.txt.nam , dummy.nam , dummy.money from data.txt,data.txt as dummy where data.txt.ID=dummy.ID+1") と書きました。 ところが、 「フィールドhiは、FROM句の複数のテーブルを参照しました」 というメッセージが出てしまいます。 なお上記「data.txt」の部分を「data#txt」とすると今度は「日付関数が間違っている」という意味のメッセージが現れてしまいます。 きりがないので別の方法で目的の作業を終えてしまいましたが、 どういうことなのか、(何処が間違っているか)教えていただけたらありがたいです。
>>578 ODBC TEXT Driverは制限が多かったりパフォーマンスに問題があったりで
あまり使ったことはありませんが 拡張子のドットが問題になるようでしたら
両方にエリアスを使ってみるのはどうでしょうか?(動作確認はしてませんけど)
from data.txt a, data.txt b where a.ID = b.ID + 1
あとDAOを使ってるというお話ですがODBCDirectですかJET(mdb)経由ですか?
580 :
575 :05/01/06 17:16:06 ID:xNYa/ivL
>>579 レス、ありがとうございます。
両方にエリアスということですが、そのような書き方をして
ためしたこともあるんですが、駄目でした。
DAOのODBC、JET径由という意味が実はよく飲み込めていない素人で
恐縮なんですが、使用しているデータコントロールでは設定をJETに
しています。
どうしてtxtファイルを用いているかというと、
定型文が羅列してあるテキストファイルを読み込ませ、
そこからデータを拾ってカンマ切りのテキストファイルにし
そのままテーブルに使用しようとしているためです。
他に適切な方法があるのかどうかは分かりませんが。
581 :
576 :05/01/06 19:55:29 ID:PHo2e4CR
postgresで1〜10並んだID(主キー)の1〜3を11〜13にupdateしたら 上書きしたデータ11〜13がselect文ですんなりと出てこないんですが どうしてでしょうか、ものすごい勢いでお願いします
>>581 すんなりってことはそのうち出てくるって事ですか?
トランザクションの途中だとか。
Webから参照してるならページがキャッシュされてるとか。
哲子?
584 :
581 :05/01/08 12:05:51 ID:kG2LW6z8
>>582 updateしたあとに11〜13の3つを表示させようとすると
なぜか8〜10が表示されます。それぞれ単独で表示させるのは上手くいくんですけど。
>>581 UPDATEの仕方やSELECTの仕方がわからないとなんとも。
SQL晒して
どうして581は少しずつしか情報公開してくれないんだろうか。。。
587 :
581 :05/01/08 21:04:17 ID:8eBZ95Kw
update table1 set id+10 where id < 4 //id1〜3をid11〜13にする select id from table //id表示 とやっても実際に表示されるのは3〜10のみ 次に select id from table1 limit 3 offset 7 //8件目から3つ表示 つまり4,5,6,7,8,9,10,ここが表示→[11,12,13]されるわけです本来ならば。 しかし出てくるのは[8,9,10]です。しかたないので select id from table1 where 11 //id11を表示 これだとちゃんと11が表示されるんですがどうしてでしょうか? 情報を出し惜しみしてるわけじゃないんです、 自分ののコミュニケーション能力が足りなくてどう質問していいかわからないんです…
>>587 ざっと見たところ考え方は間違ってないと思うので状況を誤認してる可能性が大きいと思います。
状況を誤認した状況で変に内容を編集すると問題のポイントが抜け落ちることが多いですから
psqlで実行しているなら実行時のログをそのまま出したほうが早いと思います。
明らかに転記ミスと思われるSQLが見受けられますのでこのままでは答えようがありません。
さて、今回のケースに当てはまるかどうかわかりませんが数字の大小比較がおかしい場合は、
ID列が文字列で定義されていることがよくあります。IDが主キーかどうかの情報も重要です。
テーブルの定義もアップしたほうがいいと思います。
589 :
581 :05/01/09 12:31:15 ID:ywvYRAMu
createdb aaa psql aaa create table table1( id integer primary key, //idを主キーに設定 sinamono text ); insert into table1 values (1,'aaa'); //ここでid1〜10を入力しますがここでは中略します insert into table1 values (10,'jjj'); update table1 set id = id+10 where id < 4 //id1〜3をid11〜13にする select id from table1 //id表示 とやっても実際に表示されるのは4〜10のみ 次に select id from table1 limit 3 offset 7 //8件目から3つ表示 つまり4,5,6,7,8,9,10,ここが表示→[11,12,13]されるわけです本来ならば。 しかし出てくるのは[8,9,10]です。しかたないので select id from table1 where 11 //id11のみを単独表示 これだとちゃんと11が表示されるんですがどうしてでしょうか? idは主キーに設定してあります 仕事でネット経由で間接的に使ってる方のpostgresは上記のようになるんですが いまためしたら自宅でcygwin使っての直接入力するpostgresは上手くいきました そんなわけないと思いますが上手く表示されないのはネット経由だからでしょうか?
>>589 別の環境で動くのであればSQLの使い方というレベルではなさそうですね。
ネット経由だからかどうかは、何を使ってどういう風にネット接続してるか
によるのでその情報も出してくれないと。
cygwinうんぬんのくだりだってsshやtelnetを使って仕事で使ってるその
マシンにログオンして同じpostgresを使ったのか、cygwin上で別のpostgres
を動かした(できるかどうかわからんけど)のかはっきり書かないと
コメントできないですよ。
591 :
581 :05/01/09 13:52:40 ID:ywvYRAMu
仕事(会社)ではLAN接続でTeraTerm(ssh)を使い Linuxサーバーに接続して会社のPostgresを動かしています 自宅のは勉強用に自分個人のPCに自分専用のpostgresを入れて使っています 説明下手ですいません、自宅から会社のPostgresを使っているわけじゃないです
環境はOracle9iです。 PL/SQLで簡単なプログラムを組んでいて 疑問に思う事が生まれましたので質問をさせて頂きます。 DECLARE TEST_CHAR CHAR(5); BEGIN TEST_CHAR := 'ABC'; IF TEST_CHAR = 'ABC' THEN DBMS_OUTPUT.PUT_LINE('正'); ELSE DBMS_OUTPUT.PUT_LINE('否'); END IF; END; 上記のようなプログラムを実行しますと 結果は'正'のルートを通ります。 TEST_CHARはCHAR(5)と宣言しているので 実質は'ABC△△'(△は半角スペースと考えて下さい)が 入っているはず。 それにも関わらず単純な'ABC'でイコールになってしまうというのは Oracleでは当たり前な考え方なのでしょうか? 変数に入っている半角スペース等は無視されるとか。
別な例ですとDBのKEY項目がCHARで宣言されている場合、 抽出条件等でその項目が指定されている場合は 半角スペースを補う、又は半角スペースを除去して問い合わせをかける様に していたのですがこれも無用の事なのでしょうか? テーブル:TEST_A 項目:KEY_COLUMN CHAR(5) :COLUMN1 VARCHAR2(30) データ例) KEY_COLUMN COLUMN1 001△△ 名称1 002△△ 名称2 009△△ 名称9 以上のようなデータからKEY_COLUMNが'001△△'のデータを取得したい場合は SELECT KEY_COLUMN,COLUMN1 FROM TEST_A WHREE KEY_COLUMN = RPAD('001',5,' '); としなくてはいけないと考えていたのですが。 CHAR型、半角スペースの考え方がよく分かりません。 説明が下手ですみませんが宜しくお願いいたします。
CHAR型の比較は長いほうにあわせて短いほうにブランクがパディングされる だったと思う。COBOLの文字型と同じ考え方でいいはず。
595 :
NAME IS NULL :05/01/12 00:16:16 ID:rI4jwRN3
データベースって講義一応受けてるんだけど このスレで出てるようなことは全くやってない・・・ ERモデルとかエンティティとか基数制約とか PCではなく、ひたすらノートと鉛筆ばっかり使っている・・・ きっとこんなのは基礎の基礎だと思うんだけど お前らも↑みたいなのマスターしたの?
>>595 そういうのはやれるうちやってたほうがいいと思うよ。
いきなり実務ってやつらで向上心のない連中はこの板でときどき
話題にのぼるヘボSEまっしぐらだべさ。
>>581 postgresは使ったことがないんではずしてるかもだけど。
>update table1 set id = id+10 where id < 4 //id1〜3をid11〜13にする
>select id from table1 //id表示
>とやっても実際に表示されるのは4〜10のみ
トランザクションは関係ない?
>select id from table1 limit 3 offset 7 //8件目から3つ表示
>つまり4,5,6,7,8,9,10,ここが表示→[11,12,13]されるわけです本来ならば。
orderかけてないからじゃないの?
598 :
aaaa :05/01/12 16:37:40 ID:vSkHTNjw
aaaaaaa
599 :
NAME IS NULL :05/01/12 20:13:38 ID:rxfwdxkA
>>595 実務なんて後から付いてくるんだから基礎の勉強はやれるだけやっとけ。
基礎的素養の無い雑魚みたいな使い捨てプログラマと仕事するのは勘弁ですよもう。
600 :
NAME IS NULL :05/01/13 08:37:28 ID:N1TKOkoo
こんにちは。質問させてください。 子供が小さくて外に仕事へいけない主婦が集まって ビーズアクセサリーのネットショップを立ち上げた者です。 インターネットで、ショッピングカートとは別で、 データーベースを使った顧客・商品管理・売上率の計算等をしたいのです。 Accessでデーターベースを作って、それにパスワード等をつけて 私たち販売する人のみが、ネット上で、表示・管理をしたいとしたら、 もしかしてAccess以外に、何か勉強しなくてはいけないのでしょう か・・・?
どこかの販売管理サービスのASP(アプリケーションサービスプロバイダ)を 使うほうが安全だと思うのだが。 ひとつのオフィスのLANでAccessのファイルを共有して使ってるように、 離れた場所にいる関係者でネットを使って販売管理用のAccessのファイルを 共有したいってことならば、VPNやでつないでファイルを共有するか、 XPのリモートディスクトップで一台のPCを交代で共有するのも手かもしれないですね。 ネット上で何かしたいのなら勉強すべきはまずセキュリティです。
602 :
yo-ko :05/01/13 19:57:40 ID:KcEKcyWW
MYSQLを使用しています。 初歩的な質問で恐縮ですが物凄い勢いで教えて下さい。以下のような3つのテーブルを結合したいのですがうまく行きません。どうか助けて下さい。 テーブル:甲 +-----+-----+-----+ | A | B | C | +-----+-----+-----+ | 1| 1| 600 | | 2| 1| 200 | | 3| 2| 500 | | 4| 3| 800 | | 5| 1| 300 | +-----+-----+-----+ テーブル:乙 +-----+-----+ | A | D | +-----+-----+ | 1| 100| | 2| 500| | 2| 800| | 4| 300| | 5| 200| +-----+-----+ テーブル:丙 +-----+-----+ | A | E | +-----+-----+ | 1| 500| | 1| 600| | 3| 300| | 5| 700| | 3| 900| | 5| 100| +-----+-----+ B = "1" の時の結果が以下になるようなselect文が書けません。 +-----+-----+--------+--------+ | A | C | sum(D) | sum(E) | +-----+-----+--------+--------+ | 1 | 600 | 100 | 1100 | | 2 | 200 | 1300 | null | | 5 | 300 | 200 | 800 | +-----+-----+--------+--------+ SELECT 甲.A, 甲.C, sum(乙.D), sum(丙.E) FROM 甲 LEFT JOIN 乙 ON 甲.A = 乙.A LEFT JOIN 丙 ON 甲.A = 丙.A WHERE 甲.B = 1 GROUP BY 甲.A ; 上記のように私なりに書いてみたのですが、以下のように合計値がダブってしまいます。 +-----+-----+--------+--------+ | A | C | sum(D) | sum(E) | +-----+-----+--------+--------+ | 1 | 600 | 200 | 1100 | | 2 | 200 | 1300 | null | | 5 | 300 | 400 | 800 | +-----+-----+--------+--------+
本来あまり関係のない二つの事象をひとつにまとめようとするとめんどくさくなりますね。 甲乙で表(viewでもいい)を作くり、甲丙で表(viewでもいい)を作る。 それから最終的な形にするにはどうしたらいいか考えればできます。 2つのViewをマージするSQLを作ってもいいし、1つのSQLにまとめる方法をゆっくり考えてもいい。 2表できたところでプログラム側に処理を移しマージしてもいい。 無理にひとつのSQLで処理しようとするとバグの元、処理スピードとの兼ね合いもありますが、 後々理解できる範囲のSQLにまとめましょう。
600です。
>>601 さん
レスありがとうございました。
アプリケーションをレンタルする事も考えたのですが
料金が高いのがネックでして・・・_| ̄|○
もう一度みんなで相談してみます。
605 :
yo-ko :05/01/14 09:20:18 ID:UC20sTBi
603さん。 回答ありがとうございます。 なんとか一文でできないかと考えていたのですが なかなか難しそうですね。 2表作って処理をプログラム側に移してやって見ます。 ありがとうございました。
606 :
NAME IS NULL :05/01/15 16:21:14 ID:ffG2I4Ip
CDをMP3ファイルにする時、
変換ソフトでCDDBを登録できるようになっているのですが、
CDDBのアドレスはどのようなものがあるおんでしょうか?
http://www.gracenote.com/ ここが凄いと聞くのですが、URLのどのように登録すればよろしいのでしょうか?
どなたか回答よろしくお願いします。
607 :
NAME IS NULL :05/01/15 18:32:08 ID:ludeJFlu
postgresqlで、現在データを文字コードSJISで扱ってるデータを EUCまたはUNICODEでデータベースを作り直したいんだけど、 良い方法はないでしょうか? pg_dumpで落としたダンプデータの文字コードを変換して データを入れ直しただけではうまくいかなくて悩んでおります。 御指南をよろしくお願いいたします。
方法としてはそれ以外何かあんのか? どうせデータのチェックではじかれてるんだろうから俺だったら そこを修正するようにバッチくむけど
609 :
NAME IS NULL :05/01/16 01:03:20 ID:i1aKOcPl
A社では、社員が取得している資格について、次のような“資格取得表”に記録している。 資格取得表(社員番号,社員名,{資格コード,資格名,資格取得年月}) 社員番号と資格コードは、社員あるいは資格ごとに与えられた固有の番号である。 また、1人の社員が複数の資格をもつ場合は、その社員について、{ }内の項目が繰り返し登録されている。 この表を第3正規形となるように正規化すると、表はいくつできるか。 また、それぞれの表の主キーは何か。 次の例にならって、解答せよ。 なお、表および主キーの順番は問わないものとする。 【解答例】 表が2つで、それぞれの主キーが「社員番号」 「社員番号,社員名」の場合 表の数=2 表1の主キー=社員番号 表2の主キー=社員番号,社員名
610 :
NAME IS NULL :05/01/16 02:26:54 ID:dx68E55u
助けてください。 MOを修復する方法を知っている方助けてください。 MO forum JapanのMO修復ツールを使っても修復できませんでした。 ほかの(パソコン以外の)媒体で書き込んだMOをパソコンで開き、 MOの中のデータをパソコンでデータ変換し作られたTXTファイルを MOに書き込みました。一度目は成功したのですが、次のデータをしようとしたら 動かなくなりました。 情報が少ないかもしれませんが、誰か知っている人いませんか。
612 :
NAME IS NULL :05/01/18 00:13:22 ID:JpG0y9Dd
みなさん、こんにちは。 早速、質問いたします。 現在、私は、仕事でOffice97(SR2)+DAO3.51+Oracle8i(ODBC)の環境でAccess97のモジュールにコードを記述して Oracleデータにアクセスしようとしているのですが、Oracleのテーブル項目が255バイトを超えるものをDAOのレコードセット からアクセスしようとすると、以下のようなエラーメッセージが表示されてしまいます。 実行時エラー ’14’: s1109:[Oracle][ODBC][Ora]????J?[?\????u???B 以前は、問題なく動いていたMDBなのですが、急にこのようなエラーが表示されるようになりました。 心あたりは、Visual Basic 5.0 Professional Editionを標準でインストールしたことくらいです。 もしかしたら、これが原因なのでしょうか。 他のPCでは、問題なく動いています。 VB5.0をインストールした私のPCだけ上記のような現象になってしまいます。 私のPCで動かないと、ちょっと業務に支障がでますので、よろしくお願いいたします。 それでは、失礼します。
データベースの問題です。 友達に聞いてもわかりませんでした。 [1] 関係スキーマR上の関係rにおいて 関数従属X→Yが成り立つなら 多値従属X→→Yもr上で成り立つことを証明 [2] 第4正規形なら第3正規形でもあることを証明
614 :
NAME IS NULL :05/01/21 00:11:07 ID:tOTfBFmP
PHPでデータベースにアクセスして検索キー入力して 検索結果したヒット数をだすにはどうしたらよいですか?
>>614 www.amazon.co.jp で「PHP DB」で検索
Win版Filemaker ver.6を使っていますが、平成の大合併を反映して、顧客住所を変更しろと言われています。どなたか、やりやすい方法をご存じでしょうか? お願いします。
617 :
NAME IS NULL :05/01/25 22:19:21 ID:5Qm04rSa
PostgreSQLで、DB「A」とDB「B」があったとき、 「A」に接続中に「B」のDBを参照することは可能ですか? または「A」のDB内に「B」の任意のテーブルのviewを作るとかってできないでしょうか?
618 :
NAME IS NULL :05/01/25 23:41:04 ID:tgIy3OR9
データベースにおける更新権限ってどういう意味でしょうか?
619 :
NAME IS NULL :05/01/26 20:03:39 ID:tYmIJPUK
VBでゲームを個人作成している板はどちらでしょうか?
621 :
NAME IS NULL :05/01/30 16:12:25 ID:rb/8Ozy/
Q1:トランザクション管理におけるロールバックの必要性を 具体例を示しながら説明する Q2:データベースのバックアップ方法には想定される障害の重要度に応じて 種々の方法がある。そのバックアップ方法について少なくと2種類の方法について、 おのおのどのような障害を想定しているか。 こんなこと教えて下さるネ申を探していますorz・・・
宿題は自分でどうぞ。
マルチすみません。 ORACLE8にてトリガーステートメント中に、トリガー発動の契機となったSQLを発行した プログラムの名前と、そのSQL文を取得したいのですが、 どのように記述すればよいのでしょうか? 宜しくお願いします。
625 :
NAME IS NULL :05/02/01 16:19:15 ID:RpjMX2EP
すいません、教えてください。Oracleです。 ObjectBrowserからPL/SQLをデバッグ実行して 長くなりそうだったので、ObjectBrowser毎落としました。 セッションが残ってたんで強制的に切断してもKILLEDのままで パッケージを掴みっぱなしです。おかげでこのパッケージを 呼べなくなってしまいました。どうしたら、このkilledされた alter package debugのセッションを削除できるのでしょうか?
626 :
625 :05/02/01 18:23:01 ID:???
該当セッションのSPIDを求めて、 orakillした後、さらに ObjectBrowserからkilledになっているセッションを切断したところ、 セッション一覧から消えた。OTN掲示板から。
627 :
NAME IS NULL :05/02/02 00:42:07 ID:+mVum3XE
くだらない質問ですがどなたかお願いします。 ACCESS2003のフォームでデータをクリックすると 別のフォームを表示する方法教えていただけませんでしょうか? マクロとかVBAなど方法は問いませんのでお願いします。
628 :
NAME IS NULL :05/02/03 23:42:50 ID:8NKkPXsD
ストアドとJava等にSQLを書いて、要求の都度発行するのと、 全然速度って違いますか?
>>628 複数の命令からなる複雑な処理ならストアドが速くなるが、
単一の命令の場合はほとんど差がでないことが多い。
jdbcならPreparedStatementをキチンと使うほうが大事だろう。
630 :
NAME IS NULL :05/02/04 14:53:42 ID:WeD6/Po8
ABCってデータベースに、1、2、3、4…ってテーブルがあって、全部同じ構造をしてるんです。 そこで検索するスクリプトを作っているんですが、テーブルを指定しないでそのデータベースにあるテーブル全体から文字列を検索するにはどうしたらよいのかわかりません。 調べる所は(仮に)各テーブルの000ってフィールドなんです。 その場合のSQLクエリーはどぅすればよろしいのですか?
>>630 同じ構造をしてるテーブルを正規化すれば一発で取れる
632 :
野獣牛兵衛 :05/02/07 17:37:07 ID:hLuALhzi
postgreSQL 8を使用しています SELECT COUNT文を使用して SELECT COUNT(CLASS = 1),COUNT(CLASS = 2),COUNT(CLASS = 3) FROM TABLE_NAME; みたいな命令を実行させているのですが、期待した値が返ってきません where句を使用して 必要な回数だけ繰り返せば同じ処理ができるのですが それでは悔しいです count文で条件を付与する事は不可能なのでしょうか
>>632 count()は式の値がNULL以外の行の数を数えるからこんなので。
select
count(case class when 1 then 1 else null end),
count(case class when 2 then 1 else null end),
count(case class when 3 then 1 else null end)
from table
634 :
NAME IS NULL :05/02/09 17:07:40 ID:RK4SfHLE
商品DBを任されました。データは1500件程度。 当方知識はまったくなく(Web製作の知識のみ)現在勉強中で、 とりあえずやってみようと今ローカルに環境を作ってPHPMyadminを開いたところで さっそくつまづきました。 環境はWinXPで、PHP4・Mysql4.023、実際に借りているサーバーと同じにしました。 DBについて本とかも読んでみたんですがいまいちピンとこないです。 ものすごい素人な質問ですがどなたかご教授ください。 ◎例えば、商品1500、商品ひとつにつきデータの項目が30ぐらいあるとします。 最終的には、検索でデータから5項目ぐらいを抽出して簡易表示、 そこから全データが見られる詳細ページに移動できるようにしたいと思っています。 1.この場合、PHPMyadminで「商品」というテーブルを作り、フィールド名を30個作り、 ここにすべてのデータを入力するという解釈でいいのですか? それとも、検索される項目ごとにテーブルを作るのですか? もしかして、基本的な解釈が間違ってますか? 2.その際のフィールド名なんですが、本によって日本語だったり英語だったりします。 日本語でも構わないのですか?
>>634 1は正規化の問題。
その項目がメーカー名、価格、仕入先・・のように商品の直接の属性ならそのままでよい。
その項目に仕入先1、仕入先2、仕入先3・・のように繰り返しがあるなら商品仕入先テーブルを作る。
その項目に仕入先、仕入先住所、電話番号・・のように仕入先の属性を含んでいたら仕入先テーブルを作る。
それにもかかわらず効率やその他の要因で正規化を取りやめるケースもある。
2はその組み合わせでは使ったことはないのだが、使えたとしても他のツールと組み合わせたときに
うまく動く保証が無いのでよくわからない場合は使わないほうが無難。
この辺はプロジェクト全体で決めるべきことだと思うので独りで決めないほうがいいと思いますよ。
InterBaseに対しESQL(組み込みSQL)でアクセスするWindows アプリケーションをC++Builder 6で作成していますが、 ibase.h内に不正な文字コード"0x0c”が含まれているため コンパイルエラーとなります。 ibese.hを編集すればよい話なんですが、なぜこのような 文字コードが入っているのかお分かりの方いらっしゃいますか? Windows2000 Pro gpreオプション:-cxx -n -m InterBase 6.1 (オープンソース)
IBのオープンソース版をまだ使ってる人もいるんだ。 とりあえず、FB1.0.xではそういうのでエラーが出たことはないな。
638 :
T.O :05/02/14 17:35:42 ID:RwPSRDsG
はじめまして。駆け出しプログラマです。 ご教授頂けたら、幸いです。 特定の時間から時間まで検索するSQLってどう書けば良いのでしょうか? (例:2005/02/14 12:00〜2005/02/15 12:00まで) 日付の範囲指定だけなら分かるのですが、時間の指定が分かりません。 (日付指定:select * from emp where hiredate >= '2005/02/14' and hiredate <= '2005/02/15') 仕事で日付関連のSQLを使う機会が多いので、投稿しました。(ご返信は少し遅れるかもしれません) −−−−−−−−−−−−−−−−−−−−−−−−−−−− SQL> desc emp 名前 NULL? 型 ---------------------------------------------------------------- EMPNO NOT NULL NUMBER(4) ENAME VARCHAR2(10) JOB VARCHAR2(9) MGR NUMBER(4) HIREDATE DATE SAL NUMBER(7,2) COMM NUMBER(7,2) DEPTNO NUMBER(2) −−−−−−−−−−−−−−−−−−−−−−−−−−−−
639 :
T.O :05/02/14 18:24:16 ID:RwPSRDsG
638> スレが多少、適切ではない事に気付いたので、「SQL質疑応答スレ Part 2」へ 移動しました。
データベースを個人活用してる人はどういう使い方してますか?
641 :
NAME IS NULL :05/02/20 23:17:14 ID:PA+HGUYZ
ふー、困ってます。 Access2003で、テーブルでハイパーリンク型にしているファイル(画像)を、 レポートではハイパーリンクではなくてそのまま画像を表示させる方法教えてください。
スキーマって何ですか? いろいろ読んだんですが、なかなか理解できません。 いい例え話でも使って説明してくれませんか?
643 :
NAME IS NULL :05/03/01 03:04:32 ID:03PsqoF/
db2にて csvファイルに表をエクスポートする際、 表に存在しない列を エクスポートすることってできるんでしょうか? もちろん表に存在しない列ですから、 そこにエクスポートされる値は 半角スペース、あるいはnull等でかまわないのですが…。 たとえば、表にA、B、Cの列がある場合、 selectを記述する所に左のようにかけば、右のようなカンマ区切りで エクスポートされますよね。 SELECT * ⇒A,B,C SELECT A ⇒A では、下のような結果を得たいときはどうしたらよいのでしょうか? ⇒A,(空白),B,C
644 :
NAME IS NULL :05/03/01 23:38:59 ID:6E4qrgjn
下記のようなことを行いたいのですが、もう数十時間悩んでおり、このままだとクビになります。 以下のようなテーブルが2つあります ■テーブルA 顧客ID なまえ 内線 ―――――――― 001、 佐藤、 001 ※同じ(これだけ残す) 002、 鈴木、 002 003、 田中、 003 004、 佐藤、 001 ※同じ(削除) 005、 佐藤、 004 006、 鈴木、 005 007、 佐藤、 001 ※同じ(削除) ■テーブルB 伝票ID 顧客ID 購入物 001、 001、 ガム ※対応する顧客は残る 002、 003、 チョコレート 003、 004、 塩 ※対応する顧客が残らない 004、 006、 ガム 005、 002、 塩 006、 007、 塩 ※対応する顧客が残らない テーブルAの佐藤4人中3人は、名前も内線も同じなので 顧客IDは一番小さいものだけ残し、あとは同一とみなし重複行を削除します。 そうするとテーブルBの伝票IDの001、003、006の顧客IDは全部が佐藤だったのですが 重複を削除してしまったため、003と006に対応する顧客がテーブルAから消えてしまいます。 なので、テーブルAの重複を削除するときに、同時にテーブルBの顧客IDも 一緒に一番小さい顧客IDに更新したいのです。 どうか宜しくお願いいたします。
>>644 ワークテーブルとか作れますか?
顧客IDが一番小さいものだけ、ワークテーブルに突っ込むと、方法に広がりがでると思う。
646 :
644 :05/03/02 00:33:55 ID:SXcU4gI8
ワークテーブル? その話もう少し詳しく聞かせてください
DBにもよるけど。 1.別なテーブルに、残す分のレコードを待避しちゃう(テーブルC)。 Oracleなら、create table as select *・・・がつかえる。 2.テーブルBの顧客IDに該当するテーブルAのレコードの内線番号に該当するテーブルCの顧客IDで、 テーブルBの顧客IDを更新。 3.テーブルAを全部削除して、テーブルCの内容を insert 4.テーブルCを drop で、どうだ?
一時表をおすすめします。データがほかのセッションと混じらないし、たしかログ対象で ないので余分なログを書き出さないというメリットがあったと思います。 Oracle (おそらく9以降)なら事前にアロケーションしておきます。 CREATE GLOBAL TEMPORARY TABLE table_name ... INSERTしたデータはそのセッションからしか見えず、セッションが終わればそのデータが消えます。 MSSQL だと表名に@をつけるだったかな。こっちは実行時にアロケーションします。 CREATE TABLE @table_name ... 表自体がセッション内でのみ有効でセッションが終われば表ごと消えます。
649 :
644 :05/03/02 07:12:31 ID:SXcU4gI8
>647、648 色々とご助言ありがとうございます。 しかし私はOracleビギナー中のビギナーなもんで まったく理解できません。 できれば例文でSQLをご教授いただければと思います。 わがまま言ってすいません
650 :
NAME IS NULL :05/03/02 08:47:19 ID:6sCbSKMl
ライムワイヤー関係のスレ教えてください
>>649 Oracleならサブクエリーがいろいろ使えるから、こんな感じのViewかワークテーブルを作るといいですよ。
select t1.顧客ID, t2.統一顧客ID from テーブルA t1 join
(select なまえ, 内線, min(顧客ID) as 統一顧客ID from テーブルA group by なまえ, 内線) t2
on (t1.なまえ = t2.なまえ and t1.内線 = t2.内線);
もしjoinが使えないバージョンだったら普通にwhereで結合してくださいね。
>>648 訂正、MSSQLの一時テーブルは #テーブル名でした。Oracle9i 10g ではこんな感じにかけます。
create global temporary table TableC (CsID number(3) primary key,
CsName nvarchar2(4), CsITel number(3), TrueCsID number(3));
ここまでは事前の作業、フィールド名が変わってるけど推測してください。
insert into TableC (CsID, CsName, CsITel, TrueCsID)
select t1.CsID, t1.CsName, t1.CsITel, t2.TrueCsID from TableA t1 join
(select CsName, CsITel, min(CsID) as TrueCsID from TableA group by CsName, CsITel) t2
on (t1.CsName = t2.CsName and t1.CsITel = t2.CsITel);
update TableB t1 set CsID = (select TrueCsID from TableC t2 where t1.CsID = t2.CsID);
delete from TableA where CsID in (select CsID from TableC where CsID <> TrueCsID);
commit; -- ここでTableCのデータは消去される。
誰かビューについて教えて下さいー。 複雑なSQLがあったとして、そのSQLを元にビューを作成したとします。 この場合、ビューを参照した時というのは、裏で作成元となったSQLが参照する度に実行されていて、 実行結果を得る時間は、ビューの作成元となったSQLを実行する場合と同じなのでしょうか? それとも、一度ビューを作成すれば、Oracleが裏で何かしてくれていて、毎回ビューの作成元となった SQLを実行するよりも、実行結果を早く得る事が出来るのでしょうか? 私は、ビューというのは見せたくないカラム等を隠すための、セキュリティ的な意義しかないと思っていたのですが、 先日会社の先輩が、ビューを作れば、ビューの作成元となったSQLを実行するより早く実行結果を得られると言っていたので・・・. 一応、Oracleのオンラインドキュメントには目を通したのですが、ビューについてはセキュリティ的な意義しか 書いてありませんでした。 どなたか知ってたら教えて下さい。お願いします。
>>653 あなたが正しい。ストアドプロシージャとちがって速度的なメリットはありません。
ただそういう特別な機能をもったViewを実装したDBMSがないとは言い切れませんけどね。
実行する分にはViewを使うかどうかは関係ないだろうけど、 View作成時にその「複雑なSQL」はパース済みと考えると その分だけ速くなったりしないかな? 検証したことないけどさー。 それと、俺はテーブルを結合させるようなSQLは、けっこうViewに しちゃうけどな。
>>656 例えばこんなViewがあっとして
VIEW_1 : select A.*, B.* from A join B on (A.fkey = B.key)
これを次のように実行するとする。
SQL_1 : select A.key, b.fkey, b.data from VIEW_1 where A.key = '0001'
VIEW_1が先にパースされているとすると内部的には次のような複数のSQLが実行される。
create table 中間テーブル (....)
insert into 中間テーブル select A.*, B.* from A join B on (A.fkey = B.key)
select A.key, b.fkey, b.data from 中間テーブル where A.key = '0001'
VIEW_1がSQL_1と同時にパースされることによって次のSQLが実行される。
select A.key, b.fkey, b.data from A join B on (A.fkey = B.key) where A.key = '0001'
どちらが効率がよいか明白です。これがViewが事前にパースされない理由です。
>>657 その理由は、プランナが実行計画を出せない理由であって
パースできない理由ではないかと。
とはいうもののPREPAREでもプランナまでもって行くようだから
パースとプランナって1セットで分離できない、もしくは
分離して中間コードのようなもので置いてもさほど速度的には
意味をなさないのかな。
659 :
sage :05/03/02 23:49:33 ID:fYfnGZO2
PostgreSQLでデータ型に1byte符号なし整数を使うには どうしたらいいのでしょうか?
すみません…
>>659 1バイト整数ってなかったと思うよ。
どうしてもというのなら
char(1)で定義して、chr()で挿入、ascii()で抽出すれば。
大は小をかねるでsmallintが無難。
663 :
659 :05/03/03 00:21:32 ID:???
>>661 ありがとうございます。
やっぱりそれしかないですかね。でも、ちょっと面倒ですね。
PostgreSQLを使う場合、こういうのはケチケチせずに
SMALLINTを使うものなんでしょうか?
あと、0〜65535の数値を取りたい場合も、素直にINTEGER
使った方が楽ですかね?
664 :
659 :05/03/03 00:53:46 ID:???
>>662 どうもです。
PostgreSQLを使ってる人って、その辺大らかなんですかね
(そうならざるを得ない)?
PostgreSQLを今日初めて触ってみて(といっても他のも殆ど
使ったことのない初心者なんですが)、データ型が少ないのに
愕然としたんですが。
Postgresは多いほうだと思いますけどね。 Oracleはかなり少ないです。aliasでごまかされるけど実態はほとんど numberだしなぁ。
666 :
659 :05/03/03 01:10:55 ID:???
>>665 なるほど。
自分、実務経験ないんですが、そんなに必死にデータ容量を
小さく抑えようとする必要は無いものなんですかね?実際問題として。
別スレでSQL鯖にはinterval型が無いとあったし、 point型やbox型(中身は配列型か)なんかもあるし多いほうじゃないの? あとは3次元座標とその関数が揃ってればよかったんだけね。 まぁ、作って登録すればいいのだろうけど。 実装上、SMALLINTを使うよりINTEGERを使ったほうが高速じゃなかったかな。
668 :
659 :05/03/03 01:40:42 ID:???
>>667 色々勉強になります。
これから、いろいろ試してみて、また質問させて
いただきたいと思いますので、みなさんよろしくです。
>>658 正確ですね。パースをパース+プランニングの意味で使ってます。
パースの部分をパースフェーズとでも読み替えてくださいませ。
おっしゃるとおりプランニングと比べて純粋なパース処理はきわめて軽微です。
670 :
INTER :05/03/03 14:25:55 ID:HVLlIiUk
InterBase技術者いますか? InterBase6.0 ON NT5.0SP2+JBuilderでアプリを作っているんですが アプリもDBも正常に動作しています。 が、gdbファイルの更新日付が変わらないのです。 もちろんデータは日々COMMITされています。 このような事象を見たことはありますか? よろしくお願いします。
671 :
INTER :05/03/03 14:30:33 ID:HVLlIiUk
>>670 の記事間違えました。
Win2000SP2でした。
誰か助けて...
>>670 InterBase というよりも、Winodws の特徴じゃね?
Windows は、メモリへのファイルマッピングを使ってメモリアクセスで内容を変更しても、意図的に
変えるとかファイルサイズ自体か変わらない限り日付が変わらなかったような気がする。
メモリマッピング中は仮想記憶のページングアクセスとまったく同じ原理で動いてるからね。
条件もあるんだろうけど、それでアクセスしてるんじゃないの?
書き込みがあっても空きページを再使用してればサイズは変わらないし。
673 :
INTER :05/03/03 16:09:44 ID:HVLlIiUk
>>672 さん
ありがとうございます。参考になります。
明示的にCOMMITを発行すればメモリマッピング(?)
からファイルに反映されるのでしょうか?
メモリマッピングとはファイルに反映されずメモリ内で
データを保有すると解釈しましたがあってますでしょうか。
通常のファイルIOとはまったく違う方法で読み書きするので、 アクセス日時といった情報が更新されないってことじゃないかな。 MSDNがあったらCreateFileMappingやMapViewOfFileExを参照しよう。
675 :
NAME IS NULL :05/03/03 23:13:39 ID:A6askjLe
初心者で申し訳ないです。 ACCESS2003で以下のテーブルを作りました。簡略に (基本テーブル) コード 商品名 (○月テーブル) コード 商品名 使用量 (△月テーブル) コード 商品名 使用量 など月々の使用量のテーブルがあります。リレーションでコードを結びつけ、 クエリでその月々ごとに使用頻度が高い順に並べ替えたいのですが、 どうすればよいでしょうか? 初心者すぎて申し訳ないです。 どなたかご教授よろしくお願いします。
676 :
NAME IS NULL :05/03/03 23:22:13 ID:PuIAYj8U
677 :
NAME IS NULL :05/03/03 23:23:17 ID:PuIAYj8U
なんで俺のリモートホスト が分かったんだ ほっといて大丈夫かな
678 :
NAME IS NULL :05/03/04 00:23:20 ID:5FwP+Ow1
こちらは、××警察サイバー犯罪対策本部です。 警察が個々の契約の有効性について判断を下すことはできませんが、 契約の意思が無かったものについて安易に応じないよう注意して下さい。 最近、クリックしただけで登録し課金するサイト(いわゆるワンクリック料金請求)の ご相談が増えていますが、電子契約法(電子消費者契約及び 電子承諾通知に関する民法の特例に関する法律)という法律では、 サイト側は、消費者に対して申し込み内容を再度確認させるための 画面を用意する必要があるので、このような確認措置が無いような場合は、 その申し込みは無効を主張することができるとしています。 また、このようなサイトではアクセス元のIPアドレスやリモートホストから プロバイダに契約者情報を問い合わせ、利用料金を請求すると 書いてありますが、普通のホームページ閲覧で、サイト側は IPアドレスとリモートホストを知ることができる仕組みになっており、 特別なものではありません。 契約の有効性について不安でしたら、 消費生活センターなどにご相談することをお勧めします。 最近増加している架空請求については、 以下の3点に留意するようお願いしています。 (1) 基本的には無視する。電話などで直接催促があれば、 「 利用していないので払う気はない」と毅然と伝える。 (2) こちらから相手に連絡を取らない。 (3) こちらの個人情報(住所・氏名・勤務先・電話番号等)を教えない。 今後とも警察へのご理解とご協力をお願いします。
リモートホストがわかってできることはアク禁くらいだね〜 せいぜいプロバイダを特定できる程度。個人を特定できるなら 2chだってもっとましな掲示板になってるよ〜
>>675 その構造なら基本テーブルもリレーションもいらない気がする。
select コード,商品名,使用量 from ○月テーブル order by 使用量
月ごとに別のテーブルを作ってるから月が増えるたびにテーブルと
クエリーを増やす必要がある。
月またがりでなにか処理したいならこんなテーブルにしたらよい。
使用量テーブル コード、年月、使用量 KEY=(コード、年月)
681 :
NAME IS NULL :05/03/07 20:21:40 ID:nZExOy0G
680さん ありがとうございます。 助かりました。 たびたび質問で申し訳ないのですが、 基本テーブルに種類も分類してて、 それぞれの月テーブルの使用量を合計し、 種類別に使用頻度高い順をだしたい場合は どうすればよいでしょう? 初心者には難しすぎて…。
682 :
tokyufubai :05/03/07 20:45:32 ID:3fJ8oh6R
683 :
NAME IS NULL :05/03/09 12:27:21 ID:yTLZbjHw
MSSQLServerにて where (a,b) in ((c,d),(e,f)) の様な抽出条件が通らんのですが、 タイプミスかサポート外か解んねであります。
MSSQLは使ったこと無いけど、普通は where a in (c,d) and b in (e,f) じゃね? やりたいのがandかorかわからないけど。
(a=c and b=d) or (a=e and b=f)
686 :
NAME IS NULL :05/03/09 17:41:05 ID:yL4n2lnv
以下のようなことを「SQL文のみ」で行いたいのですが、 どなたかご教授のほどお願い致します。 下記のような変換前の文字列があるとします。 それを変換後のような形式にしたいのですが可能でしょうか? ■変換前 →2721111千葉県浦安市3-3-3浦安マンション222 ■変換後 →2721111333222 要するに数字だけを抜き出したいのですが できますでしょうか。 REGEXPのような正規表現は使用できないようです、 oracle9iです。 恐れ入りますが、よろしくお願いします。
今日は機嫌がいいから特別だぞ。 decode(項目名 , 2721111千葉県浦安市3-3-3浦安マンション222 , 2721111333222 , …
>686 マルーチイクナイ >687 ネ申
PoatgreSQLで数値(16バイト)と文字列(固定長・16文字)のフィールドが存在するテーブルがあるとして 100万件程度のなかからSELECTで文字列を検索するのと数値を検索するのではどちらが早いのでしょうか? (ただし、数値や文字列は重複しています)
数値(16桁 64bit整数のことと解釈するけど)の方が効率はよいのだが、 気にするほど差は出ない。キーとして使いやすいほうを選ぶべき。
691 :
689 :05/03/10 20:52:00 ID:???
ありがとうございます。 あるひとつのレコードを特定する際にPostgresが絞り込みやすいようなキーを埋め込むというのは有効でしょうか? 例えば文字列だけのテーブルがあるとして、その文字列から求まるCRCやチェックサムのような数バイトの整数値を持たせておき、 それをインデックス化する事で、いきなり全件検索をさせるよりも効率よくデータの位置を絞り込めるんじゃないかと考えているのですが・・・
>>691 そうすると等号による検索しか出来なくなる。
等号による検索を速くしたければHashインデックスを指定すればいいんじゃない。
で、普通のBtreeインデックスでも文字列カラムの検索が出来るんだし、
何故、「いきなり全件検索」させるのかワカランな。
クエリー付のurlのように極端に長い文字列をキーにする場合はありかもしれないですね。 B-Treeしかサポートしてない処理系やキーの最大長の制限に引っかかる処理系もありますから。 それほど長くない文字列なら普通にB-Tree索引で十分。
694 :
NAME IS NULL :05/03/11 06:54:58 ID:Sz5lvXPs
たすけてくださいorz IMEのじしょがばぐかなにかでじしょがつかえなくなり、へんかんひりつからへんかんがしやすくなるしすてむが、 つかえなくなったので、きのうなにもかんがえずにIMEのふぁぃるをふぉるだごとけしてしまいました。 おかげでへんかんがまったくできなくなりましたorz IMEでいまできるのは、 はんかくへいすう1234567890、ぜんかくえいすう1234567890、ひらがなのみです。。。あときーぼーどにかいてあるきごう。 もとのじょうたいというか、ぱそこんせっとあっぷじのじょうたいにしたいのですがなにかいいあんはありませんでしょうか?; ; ちなみに、せーふもーどはこのぱそこんはふるくてがたがきてるおかげでなぜかできません。 ぱそこんのふぉーまっとはおかねが------(`A')。
695 :
NAME IS NULL :05/03/11 15:03:57 ID:vBRqYSQS
受験者名とテストの点数が入力されているテーブルから、 テストの点数上位10人の名前を出力させたいときは、 どのようなSQL文を書けばよいのでしょうか?
select 受験者名 from テーブル名 where rownum <= 10 order by テストの点数
order by テストの点数 descだった
698 :
689 :05/03/11 17:10:19 ID:???
>>692-693 レスありがとうございます。
検索対象の文字列は日本語で最大64文字程度なのですが、
漠然と数値の方が効率よくインデックス化出来るような気がして、
文字列のCRCコードを使おうかと考えていました・・・単なる誤解のようでした。
まずは、素直にBTree又はhashインデックスを作成してみてパフォーマンスをチェックしてみようと思います。
ありがとうございました
>>696 10件取得した後に点数順に並べ替えているように見えるのは気のせいか
>>695 SELECT * FROM Table AS T1 WHERE 10>=(SELECT COUNT(*) FROM Table WHERE 点数 >= T1.点数);
上位10人を抜き出すならこれだけだが、点数上位から並べ替えるのなら
ORDER BY 点数 DESC
を追加。
>>700 すげーな。
rownum使わずにやるなんて。
rownum使えばこう。
select 名前 from
(
select * from テーブル
order by 点数 desc
)
where rownum<=10
同点10位が多数いる場合、10位全員を取得したいなら
select 名前 from emp
where 点数>=
(
select min(点数) from
(
select * from テーブル
order by 点数 desc
)
where rownum<=10
)
702 :
700 :05/03/12 00:02:52 ID:???
>>701 rownumって知らなかったんだけど、どこのベンダーにもあるものなんかな?
ベンダー依存ならLIMITを使ったほうが速いかも。
>>700 に書いたのはよく順位付けするときに使うやつで、
>>701 のいうrownumの感覚に似てるな。
SELECT * FROM (SELECT (SELECT COUNT(*) FROM Table AS T2 WHERE T2.点数>=T1.点数)AS 順位 ,* FROM Table AS T1)AS T3 WHERE 順位<=10 ORDER BY 順位;
こう書くと、順位付きTop10を順番に並べれる。
703 :
701 :05/03/12 00:41:12 ID:???
あースマン、rownumはOracle8i以降限定みたい。 ACCESSだとTOPが同じ役割…らしい。 あと、順位はWHERE T2.点数>=T1.点数じゃなくて WHERE T2.点数>T1.点数にしてあとで1を足すべきでは。 (でないと2位が3人いたら全員4位になってしまう)
704 :
700 :05/03/12 01:05:04 ID:???
試験でデーターベースを扱った問題が出題されるので、学習しときたいんですけど、 ソフトを使って勉強するのが良いのでしょうか??
ベクターへ物色に行ってきます。。
707 :
ё :05/03/15 10:27:14 ID:Dg+3N2rz
仮想メモリ 推奨値は189MBなんですが 不足やら最小値が低いと言われ動作不良です いくつまで上げてもOKでしょうか? 今400MBにしてもイマイチです(アセ
>>707 OSとDBMSの種類くらい書けよ〜
Oracleだったら実メモリ最低512M必要だ。仮想メモリなぞ屁のツッパリにしかならん。
709 :
ё :05/03/15 14:21:39 ID:Dg+3N2rz
708失礼しました OS FMV DESKPOWER K8/120WLT ドライブC:のページングファイルサイズ空き容量42864MB ページングファイル無しにすると全く動作せず カスタムサイズが初期サイズ2MB 最大サイズ400MBになっている状態です。
710 :
ё :05/03/15 14:30:08 ID:Dg+3N2rz
システムXPホーム2002Ver インテルCeleron CPU 1200MHz 1.2GHz 128MB RAM となっております。
メモリ買いに行け。
ものすごく板違いかもしれんが… スキャナー等で読み込んだ画像データの文字部を テキストデータに変換してくれるようなツールないすか? つまり、 ・紙の文書を画像で取り込む ・ツールでテキストデータ化 ・文字をワードで編集し、再利用ウマー みたいなの
713 :
ё :05/03/15 16:33:59 ID:Dg+3N2rz
メモリ増設ですね 有難うございました。
>>712 ものすごく板違いだがOCRで検索してみれ。
ていうかスキャナー買ったらトライアル版だかが付いてないのか?
>>714 読み取り革命てのがありますた。
おおきに
716 :
NAME IS NULL :05/03/16 00:44:52 ID:ez0OXhUB
質問です。タグとか誰かご存じありませんか?板違ってたら謝謝
>板違ってたら謝謝 何のタグかによる。赤札特化5割引のタグなら板違い。 jstlのdatabaseタグなら範囲内。
718 :
NAME IS NULL :05/03/16 19:30:14 ID:ez0OXhUB
タグ知識全然ありません(>A<)アフ <form><textarea></form> こんな感じ?何か情報あればお願いします・‥土下座
>>718 HTMLか? あわせ技で使われることはよくあるが、とにかく板違いだ。
web制作板でも行くがよろし。
720 :
NAME IS NULL :05/03/16 22:36:23 ID:ez0OXhUB
ありがとうございますm(゚゚)m 逝って来ます
ネタのつもりだろうが全く面白くない
722 :
NAME IS NULL :05/03/17 12:28:57 ID:HZq3jAhn
ウイルス作成依頼
723 :
NAME IS NULL :05/03/17 23:13:10 ID:lU8YPFMX
win2000でレジストリからipaddressって何処探すの? 9x系とは違うんですよね? DLLとかから取得した方がいいんですか?? おせーて
724 :
NAME IS NULL :05/03/18 01:17:38 ID:gjacGokd
もしかしたらくだらないかもしれない質問で恐縮なんですけど Windowsのおまけで、Charmap(文字コード表)ってのがありますよね。 あれの「データ部分だけ」って、どこかで手に入りますか? txtでもcsvでもxlsでもmdbでもaprでも、とにかくデータとして 使える形をしていれば何でもいいんですけど
作れよ
727 :
NAME IS NULL :05/03/18 16:26:03 ID:U7Jp/A1S
728 :
NAME IS NULL :05/03/19 22:25:57 ID:8EZN6kdj
730 :
NAME IS NULL :2005/03/23(水) 15:13:16 ID:bpgAlkh7
データベースエンジン側で一意の値を自動的に入れてくれるような機能ってありますか? rowidを使おうと思ったら、今使おうとしているエンジンではrowidが出てこないので...
>>730 そこまで書いておいて何を使ってるのか書かないのはなぜ?
732 :
NAME IS NULL :2005/03/23(水) 23:41:39 ID:K1+AZ7nn
AUTOINCREMENTで一意に判別しよう
733 :
730 :2005/03/24(木) 09:48:34 ID:/NMlCCoL
>>731 マイナーな組込み機器向けデータベースエンジンなもので
書いても無意味だと思って...
一応オラクル準拠となってはいるんですが。
>>732 AUTOINCREMENTってどう使えばよいのでしょうか?
データベースに初めて触る超初心者なもので、教えていただければ幸いです。
何がしたいのかというと、例えば
ID NAME
1 aaa
2 bbb
3 ccc
4 ddd
となっていて、ID=2を削除した後に、新しいname=eeeを
ID=2として格納したいのです。且つ、使用者はIDの管理を
しなくてよいというふうにしたいのです。
何か良い方法はないでしょうかm(_ _)m
>>733 単純にシーケンスを使ったらダメなのか?
735 :
超初心者 :2005/03/24(木) 12:36:36 ID:nqjgAjzD
合計値をそれぞれの年月ごとに求めるんですけど、年月がnumberで20001010 のように入ってて、group byを使うと日毎に表示されてしまうんです。 なんとか、なりませんかね。
736 :
名無しさん ◆Me6i2cacaw :2005/03/24(木) 13:05:34 ID:osF8Wc1p
USBに何か差し込んでも反応しなくて『システムプロパティ』→『デバイスマネージャ』→『ユニバーサル シリアル バス コントローラ』→『SiS 7001 CPI to USB Open Host Controller』に『!』がついています。 どうすりゃ、USB読み込みますか?
737 :
730 :2005/03/24(木) 13:31:49 ID:/NMlCCoL
>>733 すみません。「単純にシーケンスを使う」ということが
どういうことなのかわかりません。汗
教えていただけませんでしょうか。m(_ _)m
ちがった、100で割れ
740 :
超初心者 :2005/03/24(木) 15:20:14 ID:nqjgAjzD
741 :
NAME IS NULL :2005/03/24(木) 17:31:36 ID:nqjgAjzD
2つのテーブルを単に結合させることってできないんですか。 宜しくお願い致します。
>741 UNION ALL のことか?
>>737 Oracle準拠ならSEQUENCEがサポートされているのではないですか?
CREATE SEQUENCEでシーケンス作って、INSERT時に該当するカラムの値として
シーケンス名.nextvalとしてやればよいのだが。とりあえず、Oracle シーケンス
で検索してみて、使ってるDBMSでシーケンスをサポートしているかどうか確認して
みてはどうですか。
create table mytable( idnumber, namevarchar2(20) ); create or replace function mynextval return number is maxval number; numval number; begin select count(*), max(id) into numval, maxval from mytable; if numval = maxval then return maxval + 1; end if; select min(mynum) into maxval from (select id, rownum as mynum from (select id from mytable order by id) ) where id <> mynum; return maxval; end; insert into mytable values( mynextval, '鈴木'); 作ってみた。シーケンスだと番号の再利用が難しいね。
745 :
NAME IS NULL :2005/03/25(金) 18:15:31 ID:R2Cqf2jj
サーバー、クライアント windowsXP SP2 PostgreSQL8.0(Winネイティブ版) perl5.008 DBD::PgPP 先日postgresqlを導入しました。 ためしに掲示板を作ってみたのですが、 insertなどのSQLのログを取得しようと、 あれこれ調べてみるとトリガー&ユーザ定義関数を使えば可能という事までわかったのですが、 PL/PgSQLもPl/Perlもインストールされていない事が判明しました。 実際に行いたいのは、 dataというテーブルに対するinsert、update、deleteなどの操作を logというテーブルに格納したいのです。 ログテーブルのカラムはno(シリアル)、user(varchar)、time(timestamp)、logsql(txt)となっています。 掲示板はユーザ管理を行っているためperl側でcookieから受け取ったユーザーネームを userに格納し、timeは現在時刻をデフォルトで格納し、logsqlはトリガーで格納です。 質問は、 1・WindowsのPostgreSQLに後からPL/Perlなどをインストールする事は可能でしょうか? 2・ユーザ定義関数をSQLだけで書いても上記のような事を実装する事は可能でしょうか? できれば例も書いていただけると助かります。 どうぞよろしくお願いします。
746 :
NAME IS NULL :2005/03/25(金) 19:49:59 ID:gVDgIkMl
Oracle JDBC Driver 10.1.0 ドライバで、preparedStatement 使うとエラーが発生します。 どうも日本語文字を入れようとしているのが問題みたいなのですが。 同じような経験した人います?
>>744 空き番号を探すコストやマルチで処理することを考えると再利用は避けたいのだけど、
顧客からそういう要望はよくあるんだよね。素直にシーケンス使えば簡単なのに。
これからデータベースの勉強をしたいのですが、 データベースを構築するにはOSはwindows2000server などじゃないとだめなんでしょうか?
いや、Windows2000 Server じゃなくても別にかまわない。 Windows2003 Serverでも良い。 NetBSDでも良いし、Solarisでも良い。 MacOS X Server だってかまわない。
Windows95にAccessでもいい?
AccessのSQLは方言がきついからあまりお勧めできない。
ServerOSとXPなどのOSはなにが違うのでしょうか? SQLServerの勉強をしたいのですがXPProでは無理なんでしょうか?
>752 >ServerOSとXPなどのOSはなにが違うのでしょうか? ライセンス >SQLServerの勉強をしたいのですがXPProでは無理なんでしょうか? 全く問題ない。 >748は質問の書き方が問題。
SQLServerなんですが、 SET @A=(SELECT A FROM TBL1 WHERE ID=1;) SET @B=(SELECT B FROM TBL1 WHERE ID=1;) SET @C=(SELECT C FROM TBL1 WHERE ID=1;) といったような同一のレコードから複数の値を取得したい場合、簡潔に書く方法はありますでしょうか?
select @A=A,@B=B,@C=C from TBL1 where ID=1
757 :
755 :2005/03/29(火) 17:42:31 ID:???
758 :
NAME IS NULL :2005/03/30(水) 09:00:31 ID:XG0PxlMt
Accessについて質問です。 2つのフィールドのうち、それぞれのフィールド・データは重複しても良いが、 2つのフィールドのデータで重複があったときにエラー・メッセージを出すように するにはどうしたらよいでしょうか? 例えば住所録で、名前は漢字も含めて同姓同名がいる場合があるので、名前フィールドの レコードは重複OK、住所も同じ番地に二家族がいる場合があるので住所フィールドの レコードも重複OK、しかし、名前と住所が同じ場合は、同じ人のデータをふたつ登録 してしまうことになるのでエラー、みたいな感じです。 初心者なものですみません。よろしくお願いします。 Access 2000、Windows 2000使用です。
>>758 Accessで可能かどうか知らんけど、普通UNIQUE制約を掛けるが。
CREATE TABLE address_note
(
address varchar(100),
name varchar(20),
UNIQUE (address, name)
)
>>758 普通は
>>759 だけど(accessで出来るかは自分も知らない)
質問そのものに対する回答ということであれば
二つのフィールドを結合させて比較。
名前||住所(accessだと名前&住所、だっけ?)みたいに
761 :
NAME IS NULL :2005/03/30(水) 11:11:52 ID:fP9ktgju
SQL(Oracle8使っています)にて以下の構文を書こうとしているのですが、 Where句の並び準や位置を変更すると処理スピードは変わるのでしょうか? A.aaa = B.aaa を B.aaa = A.aaaにしてみたり、 条件最終行を先頭にもってきたりするイメージです。 そこらへんの詳しい事が書いてあるページでもかまいません、ご教授願います。 select C.eee,A.aaa,A.bbb,C.ccc,C.ddd from A,B,C where C.eee = '固定文字' A.aaa = B.aaa A.bbb = B.bbb B.ccc = C.ccc B.ddd = C.ddd
>761 変わる。 詳しいことは、SQL Tuningの84ページから107ページに書いてある。 Author: Dan Tow ISBN 0-596-00573-3
763 :
NAME IS NULL :2005/03/30(水) 11:25:57 ID:E+bsGd0v
マスタテーブルのレコード数が増えてきた時の管理方法について悩んでいます。 件数が少ないうちは良いんですが、増えてくると以下の問題が考えられると思っています。 ・件数が増えすぎて入力時に探す時間がかかる ・該当項目が無かったので「その他」と入力したが、実は見落としていて存在する項目だった 大規模なDB管理者は、このような悩みはお持ちではないのでしょうか?
764 :
761 :2005/03/30(水) 11:42:02 ID:dC7LP9EH
ありがとうございます。 ページと宣言した私もあれなのですが、 手元に書物類が無いため調べる事が出来ません。 もし、ダイレクトに記述されているURLとかありましたら お教えくださいませ。 最終的に○○、△△の単語でぐぐれでもかまいません。 自分の力では探せれませんでしたorz
766 :
761 :2005/03/30(水) 12:29:47 ID:???
>>765 ありがとうございます。勉強してみます。
>>763 普通はID入力欄で右クリックしたりESCを押したりすると
マスタ検索用のちっこい画面が出てくるようにつくる
>>765 from句の記述順序で駆動表が変わる処理系は知っているが、
where句の記述で駆動表が変わる処理系ってあるかな?
(,,゚Д゚)∩先生質問です DBでピンポンってよく出てくるけど何のことなんですか?
770 :
質問 :皇紀2665/04/01(金) 19:16:49 ID:xJl2Q7lG
PostgreSQLにて SQL文を実行し、そのまま前のデータを残して、ある文字を後ろに付け加えるにはどのような文章をSQL文を書いたらよいですか? 例えば 秩父 高崎 前橋 熊谷 と言うデータがならんでいて 更新後に 秩父市 高崎市 前橋市 熊谷市 というような感じのデータに書き換えるにはどんなSQL文を書いたらよいですか?
>>770 SELECT city || '市' FROM ....
772 :
NAME IS NULL :2005/04/02(土) 23:01:45 ID:F/fwSurc
だりかー!! リアルプレイヤーでNAVERのスクラップされてた曲を CDに写したいのですが、ギリギリのところで、リアルプレイヤーが 固まってできないのです・・・
773 :
質問 :2005/04/04(月) 14:41:16 ID:VM5d4pcd
>>771 ありがとうございました!出来ました
続けての質問で申し訳ないのですが、
次のようなデータがあります。
埼玉県さいたま市
栃木県宇都宮市
埼玉県秩父市
千葉県八千代市
埼玉県川越市
東京都八王子市
where mailaddress like '埼玉県%'
この中から、秩父市を除く埼玉県を抽出したい場合は、
どのようなSQL文を書いたらよいですか?
↑のSQL文に加える文を教えてください。
not like
email のカラム名は何にしているんだろうね
table1 は id(int) と vnc(int) と date(datetime) という列があります。 vnc の値は -1 か、その行の id よりも若い int 値。 select したいのは以下の条件のいずれかを満たす列の date 降順 limit 0, 15 1)vnc が -1 で、他の行の vnc のがその行の id を指し示さない行 2)vnc が 0 以上で、同じ値を示すグループの中で date 降順的に筆頭の行 おながいします。
777 :
776 :2005/04/04(月) 19:01:25 ID:???
列と行がごっちゃになってます…後半部分、正しくは select したいのは以下の条件のいずれかを満たす row の date 降順 limit 0, 15 1)vnc が -1 で、他の行の vnc のがその行の id を指し示さない row 2)vnc が 0 以上で、同じ値を示すグループの中で date 降順的に筆頭の row
select * from table1 where vnc = -1 and id not in (select a.id from table1 a join table1 b on a.id = b.vnc) order by date1 desc select * from table1 a join (select vnc, max(date1) as maxdate from table1 group by vnc having vnc >= 0) b on (a.vnc = b.vnc and a.date1 = b.maxdate) order by date1 desc limit 0, 15はPostgreSQL専用っぽいので付けてない。
779 :
777 :2005/04/04(月) 20:49:15 ID:???
>> 778 すげぇ! この2つの SQL statement の結果を合わせて、date 降順に並べ替えるのはどうすればいいんですか?
780 :
NAME IS NULL :2005/04/04(月) 21:08:45 ID:DcDa0Zng
超初心者の質問ですみません SQLserverを使用したERPシステムのデータテーブルを アクセスのDBにリンクさせてデータを操作することは可能ですか?
>>780 ERPのマニュアルを調べるか販売元に問い合わせるべき。
テーブルはのぞけるかもしれないが使うべきではない。
>>779 select * from table1 where vnc = -1 and id not in
(select a.id from table1 a join table1 b on a.id = b.vnc)
union all
select a.* from table1 a join
(select vnc, max(date1) as maxdate from table1 group by vnc having vnc >= 0) b
on (a.vnc = b.vnc and a.date1 = b.maxdate)
order by date1 desc
テーブル設計が悪くて問い合わせが複雑になってしまってる。
-1をやめてidと同じ番号をセットするだけでシンプルになると思うよ。
783 :
NAME IS NULL :2005/04/04(月) 21:30:32 ID:DcDa0Zng
>>780 使うべきではないというのは主にどのような理由ですか?
現在はシステムの機能でデータをDLして(エクセルファイル)それを加工して
からアクセスにimportしています。
毎回DLするのが結構めんどくさいのでテーブルのリンク
のような感じで使用できたらと思ったのですが。。。
784 :
NAME IS NULL :2005/04/04(月) 21:31:15 ID:DcDa0Zng
id name age 1 a 10 2 b 15 3 c 16 4 d 17 ↑このようなテーブルでIDが4の列を一番上に持っていくにはどのようにしたらよいでしょうか? MYSQLを使っています。 また新たにinsert into でデータを入力する際にID2と3の間に入れたい場合もどのように記述したらよいでしょうか?
786 :
785 :2005/04/04(月) 22:23:36 ID:???
すみません二個以上にスペースは省かれてしまうのですね。 見にくいですがnameがabcd ageが10.15.16.17となっています
787 :
779 :2005/04/04(月) 22:33:27 ID:???
>>782 ありがとうございました。
相談した相手が違う値を入れた方が、後でトラブルが少なそう、って言われたんですけど、
考え直してみます。
>一番上に持っていく こういう考え方は良くない。 SELECTで取り出す順序を変えるのなら、ORDER BY
789 :
785 :2005/04/04(月) 23:37:51 ID:???
>>788 ご指導ありがとうございます。
掲示板を作成していてレスがついたら上にくるようにしようと思っています。
当初考えていたのは一番下から10行の親記事を表示しようと思っていたのですが、
順番がかえられないとなると、表示する順番用のフィールドを作り、表示する際は
全レコードを読み込んで表示順用のフィールドから数字が大きいもの10個を表示する
というような方法しか思いつきません。
うまく説明できなくて申し訳ないのですが、参考になるページ等ありましたら教えてください。
>>789 勘違いしているようだけど、原則としてRDBMSでレコードが実際にテーブルに
格納される順序は指定できない。もし特定の順序で取り出したかったら788
の通り、SELECT文でORDER BYを指定する。785の例であれば、
ORDER BY ID DESC
と指定して取得し、最初の10件だけ表示するようにすればいい。
>>790 ORDER BY ID DESC これでぐぐったらわかりました。
お手数かけました。ありがとうございます。
792 :
NAME IS NULL :2005/04/05(火) 19:35:52 ID:o1ZD/MjR
質問ですが、ソフトウエア会社等に、アクセスで作ってもらってPCに入れてもらったものがあるのですが、追加でもう一台のPCでも出来るようにコピーしてで来るものなのでしょうか?お願いいたします。
>>792 作った会社に聞いてくれ、としか言いようが無い
796 :
NAME IS NULL :2005/04/07(木) 02:41:15 ID:1VNDdRCB
selectで出た結果の文字列を一定の長さで切り落とすような 方法は無いものでしょうか。 例えば、aというフィールドに「あいうえお」という文字列が入っている場合、 select a from table; でa内の「あいうえお」を「あいう」までにしたい場合をご教示いただきたく 思っております。 宜しくお願いいたします。
>>796 SELECT substring(a from 1 for 3) FROM table;
799 :
NAME IS NULL :2005/04/07(木) 21:27:28 ID:TsyIacKU
1レコードが400バイトを超えるレコードをSelectすると、4000バイトまでの出力結果しか得られません。 4000バイト以降のデータを取得する方法をお教えください。 Oracle 8.1.7 になります。
>>799 SQL*Plusの話ですか?クライアントの環境も教えてくださいね。
801 :
NAME IS NULL :2005/04/08(金) 09:43:26 ID:qWU4ovur
すみません。 SQL*Plus でのことです。 また質問内容にタイプミスがありましたので、訂正いたします。 冒頭の「1レコードが400バイトを超える」部分は、「1レコードが4000バイトを超える」です。 '0'が1つ足りませんでした。 よろしくお願いいたします。
>>801 set linesize (1行に表示させる文字数);
テーブル設計書って表の説明やカラムの説明が書かれている ものだと思っているんですが、加えてER図も無ければ ちゃんとしたテーブル設計書っていわんのかな。 お客さんに、テーブル設計書にER図が無いので書いてくださいと 言われてしまったYO。 ER図書きたくないのなら、納品物の確認でER図は 含みませんって断るのが普通? 泣くところですか? 自分がヘタレなだけですか?
>>803 オマイが言うテーブル設計書というのは、「テーブル定義書」のことだろ。
テーブル設計書と言われると、テーブル定義書やER図やインデックス仕様書などを含むと漏れは連想するなぁ・・・
ていうかER図くらい描けよ!
(#゚Д゚)ゴルァ!!
ER図はテーブルとの相関関係を知る上で重要なものだし、
既にオマイの頭の中にER図が出来てるなら簡単に作成できるだろうが。
というかER図を書かないでよくテーブル定義書を書けるよな。
>>804 テーブル定義書なしでER図だけ納品されるよりはましだけど。
それもすでに作ってしまったテーブルからツールを使って逆生成しただけの
ERもどきだったりする。
806 :
803 :2005/04/09(土) 08:49:08 ID:???
>>804 ,805
レスありがとう。
>既にオマイの頭の中にER図が出来てるなら簡単に作成できるだろうが。
そうなんだけど、他の仕事もあるし。。。
>というかER図を書かないでよくテーブル定義書を書けるよな。
フリーのツールで吐き出して、カラムのコメントだけ入れた。
とりあえず漏れがヘタレだったって事ですね。
ObjectBrowserでサクッと書くかな。
>>783 アクセスはデフォルトでは結果セットを変更可能な状態で開こうとする。
そこで不用意にデータをいじってしまって事故になる可能性はある。
あと、システムが予期していないロックを保持し続けて
システムの動作を邪魔してしまうかもしれない。
レポート用のストアドがあればそれを叩くようにすれば比較的安全になるかも。
絶対ではないけどね。
すみませんどうしてもわからないsql構文があります。 次の二つのテーブルがあるとします。(実際はもっと長いです) table_a d_id | s_id | a_array[] -------------------- 1 | 1 | {1, 6, 2, 4} 1 | 2 | {1, 3, 4, 5} 2 | 1 | {} 2 | 2 | {2, 6, 3} table_b d_id | s_id | a_id -------------- 1 | 1 | 3 1 | 1 | 5 1 | 2 | 1 1 | 2 | 6 このとき、d_id | s_id | a_id | count_num という view が作りたいのです。 count_num の定義:table_a.d_id = table_b.d_id AND table_a.s_id = table_b.s_id の時の table_a.a_array に入ってる table_b.a_id の数 上記の例でいうなら、こういう表示になります。 d_id | s_id | a_id | count_num -------------- 1 | 1 | 3 | 0 1 | 1 | 5 | 0 1 | 2 | 1 | 1 1 | 2 | 6 | 0 どなたかご教授願えればと思います。ちなみにPostgresqlです。
table_aを設計した人を呼び出して 鼻血が出るまで殴るというのはどうだろう
810 :
NAME IS NULL :2005/04/10(日) 07:46:45 ID:frmzNCNU
>>808 a_array列内の値に重複ってある?
無ければ↓のSQL文で大丈夫だと思うが・・・・
・0の場合は、対象の値が存在しない
・0以外の場合は、対象の値が存在する
SELECT
table_b.d_id, table_b.s_id, table_b.a_id, position(talbe_b.a_id in table_a.a_array) count_num
FROM
table_a, table_b
WHERE
table_a.d_id = table_b.d_id AND
table_a.s_id = table_b.s_id;
漏れもテーブル設計者を集団リンチする事をお勧めする。
('A`)
ちと汚いですが select d_id, s_id, a_id, sum(cnum) as count_num from ( select a.d_id, a.s_id, b.a_id, a.arr, case when b.a_id = a.arr then 1 else 0 end as cnum from table_b b left outer join ( select d_id, s_id, a_array[1] as arr from table_a where a_array[1] is not null union all select d_id, s_id, a_array[2] from table_a where a_array[2] is not null union all select d_id, s_id, a_array[3] from table_a where a_array[3] is not null union all select d_id, s_id, a_array[4] from table_a where a_array[4] is not null ) a on b.d_id = a.d_id and b.s_id = a.s_id ) c group by d_id, s_id, a_id;
すいませんDBの勉強するなら 「PostgreSQL」と「MySQL」のどっちが良いのでしょうか?
MySQL やるなら 4.1 は日本語関係がバギーなので 4.0 を。 個人的には PostgreSQL 8.0.2 を勧める。
>>820 どうもありがとう。
さっそく調べてみます。
822 :
NAME IS NULL :2005/04/14(木) 15:31:18 ID:5K9aESos
whereで絞り込んだ件数が23件だった場合、20件に切り落と したいのですが、timestampを見て古いもの3件をdeleteする ようなSQLを書きたいのですがどうも思い浮かびません。 ご教示いただけますと幸いです。
>>822 20件固定なら
SELECT TOP 20 〜
>>823 説明下手ですみません。
20件固定で常にデータを保持していたいということなのですが、
PostgreSQLではなにか方法がございますでしょうか。
自分の練習がてら書いてみた。 DELETE FROM TableA WHERE Not(timestamp IN (SELECT TOP 20 timestamp FROM TableA ORDER BY timestamp DESC)) timestampが重複する場合は20件以上残ることもある。 ってかPostgreSQLで試したわけじゃないし、自己責任でな。 …しかしわざわざdeleteする意味ってあるんだろうか? 残しときゃいいじゃん、勿体無い。
>>822 DELETE FROM Table
WHERE timestamp_field <(SELECT min(timestamp_field) FROM Table AS Foo WHERE 20>(SELECT count(*) FROM Table WHERE timestamp_field>Foo.timestamp_field));
書いてて冗長な気がする。もうちょっと短くなるかな?
827 :
NAME IS NULL :2005/04/14(木) 22:30:25 ID:odModjzd
828 :
825 :2005/04/15(金) 09:26:00 ID:???
あ、PostgreSQLじゃTOPは使えないのか。 代わりにLIMITが使えるみたいだから、こうかな? これも試すなら保障ナシの自己責任で。 DELETE FROM TableA WHERE Not(timestamp IN (SELECT timestamp FROM TableA ORDER BY timestamp DESC LIMIT 20))
829 :
NAME IS NULL :2005/04/15(金) 09:48:32 ID:5K0FDFV5
特に処理速度が求められない状況でのQuery発行についての質問があります。 保守面を考えると、テーブルを結合して長ーいSQL文書いて一度のQuery発行でデータを取得するのより、 複数に分けてばらばらにデータを取得するほうが良いですか?
一度のクエリ発行で取得できるデータなら、適度にビューをネスト させて構造を整理したうえで一発取得が上策。 …じゃないかと自分は思うんだけど。教えてエロい人。
832 :
& ◆guxGbIieIQ :2005/04/16(土) 19:56:40 ID:sBSCoyrD
RDBMSについて質問です。 OSはLinuxがはじめてなのでVineLinuxを選び、 勉強がてらDBを構築したいと思っています。利用は自分だけです。 ANSI/ISO SQLの仕様に一番準拠しているRDBMSってなんですか? ライセンス料は\0がいいです。
834 :
NAME IS NULL :2005/04/17(日) 20:08:31 ID:SKMh7PuW
836 :
すいません :2005/04/17(日) 22:13:49 ID:McU+yINZ
すみません教えてください。。。 いろいろ調べたけど分かりません。 Access2KからOracleで作られたテーブルをVBAで直接触ろうとしています。 詳細はこんなかんじです。 フォームに作成した登録ボタンをクリックすると Accessの○○テーブルからOracle○○テーブルへデータが追加される Oracleテーブルは、Accessからリンクテーブルしています。 Dim CN As ADODB.Connection Dim RS As ADODB.Recordset Set CN = CurrentProject.Connection Set RS = New ADODB.Recordset Set serch_cn = CurrentProject.Connection Set serch_rs = New ADODB.Recordset INSERT_SQL = "oracleのSQL(insert)" IN_COMSTAFF_RS.Open INSERT_SQL, CN, adOpenKeyset, adLockOptimistic 自分のパソコンでは問題なく動作するのですが、 作成依頼者は、 登録ボタンをクリック時に Oracleのユーザ名・パスワードを毎回聞いてくるのでどうにかしてくれ といっています。 どうしたらよいのでしょうか?
837 :
& ◆bUUJtFw26k :2005/04/17(日) 22:15:20 ID:McU+yINZ
Set serch_cn = CurrentProject.Connection Set serch_rs = New ADODB.Recordset は意味ないので読み飛ばしてください・・・
838 :
NAME IS NULL :2005/04/17(日) 22:30:15 ID:uNJFXCMd
OracleのDBサーバを作りたいのですが、どのOSがいいか教えてください。 Windows?AIX?Linux?Solaris? ちなみに今の候補としてはMiracle LinuxかRedhat Linuxを考えてます。
Oracle10gならLinuxがいい。 MiracleかRedHatが無難。
840 :
833 :2005/04/18(月) 00:39:04 ID:yfJ4i9Qw
FireBirdはどうですか?
>>840 VineにFireBirdの公式パッケージは無かったとおもう。
842 :
NAME IS NULL :2005/04/18(月) 03:32:01 ID:PXlORFGA
>839 レスTHANX。 やっぱりLINUXがいいんですね。 Windowsに10g入れたら、何分かに1回フロッピーチェックをするという おかしい状態になったので、やめました。 10gのせようと思ってるので、RHELにしようと思います。
843 :
NAME IS NULL :2005/04/18(月) 13:44:22 ID:4k8VMJQi
WinXPを使ってデータベースを立ち上げようと思っています。 立ち上げ方は、何とかわかりました。 そこで、IISを無料でダウンロードできませんか? NTなら付属されているみたいですが、XPにはないみたいで・・ おねがいします
>>843 XP Proに付属されている。Pro版にアップグレードすべし。
845 :
NAME IS NULL :2005/04/19(火) 02:00:22 ID:UrW92pgH
timestampで「now()に一番近いデータ」を取り出すやり方って ございますでしょうか?
846 :
824 :2005/04/19(火) 03:27:16 ID:???
>>826 様、828様
レス遅くなりすみません。
すばらしいです。勉強になりました。
828様のものを使わせていただきました。
本当に有難うございました。
848 :
NAME IS NULL :2005/04/19(火) 10:34:35 ID:hCZOUp6o
テーブル設計でデータ(行)を削除する仕様を決めるとき、 DELETE命令で実際に削除するか、 削除フラグをカラムに含めて、データそのものは削除せず貯め込むかの どちらか選択すると思いますが、 どっちがベターなんでしょうか? (データ量とか運用とか考慮せんといかんとは思いますが)
>>848 最後の1行が答えだと思う
オレはマスタ類はフラグで、それ以外はデータ量に応じてやってる
フラグ立てといてバッチで消すっていうパターンもたまに使う
>>836 ODBCの設定でパスワードとか入れてないんじゃない?
と、適当にいっていみる。
エクセルでデータベース作ろうと思っているのですが、 まずどこからはじめたら良いのでしょうか? 作成しようとしているものは販売状況表で後から検索できるものです。
853 :
851 :2005/04/19(火) 15:37:55 ID:???
854 :
833 :2005/04/19(火) 17:38:01 ID:BU3ODWOg
855 :
NAME IS NULL :2005/04/19(火) 21:49:13 ID:I6SRgg44
どなたか、教えて下さい SQLサーバーで、ADO使用(VB6.0) open後のselect文の実行途中でキャンセルして。 途中まで画面に表示できますか? よろしくお願いします。
856 :
NAME IS NULL :2005/04/19(火) 23:17:15 ID:wl1ba11Z
edpってデータベースの一種だと思うのですが 何の略かわかりません、教えてください
857 :
きむ :2005/04/20(水) 11:33:49 ID:lvdW/q3y
Oracleのvarchar2はlongのように動的に領域を拡張するのでしょうか。それとも指定サイズ分の領域を必ず占有してしまうのでしょうか。どうか教えてください。
>>857 Oracleのvarcharは可変。可変の処理系が多いがFirebirdなど固定のもある。
859 :
NAME IS NULL :2005/04/20(水) 23:37:11 ID:EHx9rP/e
どなたか知ってたら教えてください。 あるテーブル(NUMBERやVARCHAR2型の項目がいくつかある) にINSERTしようとすると、 WIN2000の場合は正常に登録できるのですが、 WINXPの場合はORA-1401(列に挿入した値が大きすぎる)で 弾かれてしまいます。 とくに桁あふれするようなデータはなさそうなのですが、 気になることといえば、 上記の処理はVBから引数を指定してストアドファンクション で行っているのですが、ファンクション側の引数にINT型 とかを指定していてそれをNUMBER型の項目に入れています。
860 :
NAME IS NULL :2005/04/21(木) 00:36:57 ID:V0sk5GrL
ベタな質問で申し訳ありません。 Solaris版 Oracle10gで、Pro*COBOLはどこに格納されているのでしょう。 通常のEnterpriseのDevelopment KitではPro*Cしか インストールされませんでした。 Oracle programmerのライセンスは持っています。
862 :
NAME IS NULL :2005/04/21(木) 19:47:02 ID:r+WQRtXN
何もわからないド素人です。検索してここにたどり着きました。 web上でデータベース(?)を組みたいのですが、 やりたいことは、このような感じです。 ジャンル 商品名 原価 売値 を入力。 アップすると お客さん側は ジャンル 商品名 売値が見えて 管理側は ジャンル 商品名 原価 売値 が見えるということを やりたいのです。 このようなことが出来る無料のCGIを探してみたのですが なかなか見つからず困っています。 どなたかわかる方いらっしゃいましたらご教示願います。 当方プログラムを全く勉強したことが無く、やったことといえば 無料のCGIをダウンロードし、説明どおりにUPしたことくらいです。 これくらいの知識でも、ここでこんなのをダウンロードしたら 出来るよ、というのがあればお教え願いますか?
>>862 それもデータベースには違わないがここはデータベース管理システム(DBMS)
やSQLがメインだからWEB関係の板に行ったほうが良くないかい。
864 :
862です :2005/04/21(木) 22:43:01 ID:r+WQRtXN
あ。そうだったんですか・・・。 知らずに書き込んでしまって大変失礼を致しました・・・。 WEB関係の方にいってみます。 適切な指示ありがとうございました・・・。
865 :
◆ozOtJW9BFA :2005/04/22(金) 12:45:42 ID:II7QQsyJ
-spaceでサーバ借りてるんですけど php プログラムは完成して立ち上げて機動するようになったんですけど mysql がよくわかんなくって Warning: mysql_connect(): Can't connect to local MySQL server through socket '/tmp/mysql.sock' (2) in /export/home2/****/public_html/**/*****.php on line 3 パーミッション600 なんですけど PHPの中身は <?php mysql_connect('', '', ''); mysql_select_db(''); ?> こんなんですけど これって データーベース作れってことっすか? どなたか詳しい方情報お願いします。 難しぃぃ 初心者から早く抜けたい
>865 まだ、ここで質問するレベルに達していない。 まず、その「-space」とやらのサポートに聞け。
>>865 データベースサーバ作ってないって事やろ?
PHP+MySQLやろ
データベースサーバーの作成方法は
ググレ
皆さんDB作る時オプチマイザって何にしてます? やっぱりちゅーず?
869 :
NAME IS NULL :2005/04/22(金) 22:13:00 ID:UVNhzrAw
868でつ。 ちなみにおらくるでつ。
test
>870 レスありでつ〜 でやっぱdbmsかなんかで統計情報取ってやるのかしらん?
全てのフィールドにNOT NULL制約付けとけと言われたのですが これって意味有るんでしょうか。 not nullって全部に打つのメンドイ。
mysqlを使用しようと思ってるんだけど、 mysqlをインストール後、 chown -R root /usr/local/mysql chown -R boy /usr/local/mysql/var chgrp -R boy /usr/local/mysql としたところ、やっぱりユーザーboyに変わって、girlという ユーザー名に変更しました。 userdel boy chown -R root /usr/local/mysql chown -R girl /usr/local/mysql/var chgrp -R girl /usr/local/mysql /usr/local/mysql/bin/mysqld_safe & と入力すると chown: boy:ユーザ指定が不正 Starting mysqld with databases from /usr/local/mysql/var とでてきます。 なぜchown -R girlとしているのにユーザ指定が不正とでてくるのでしょうか?
875 :
NAME IS NULL :2005/04/24(日) 10:01:49 ID:aPyqHgnm
>>874 マルチはよしなよ。
boyって本当はmysqlというユーザ名かな? だったら当然の話という気がする。
まぁ今頃は自己解決してるか。
877 :
NAME IS NULL :2005/04/24(日) 16:02:56 ID:nrSc9FZA
あの・・・postgresでPL/SQLを使うにはどうしたらいいんでしょうか? PostgreSQL 8.0をWindowsに入れているのですが。
878 :
877 :2005/04/24(日) 16:06:50 ID:nrSc9FZA
追記 何か設定が必要でしょうか? GOOGLEで調べたけど分からないので、ご教授ください!
>>877 PL/SQLはOracleのストアドプロシージャ記述言語、
PostgeSQKにストアドプロシージャがあるかという質問なら、
今のところなかった気がするが、最新版はしらんけど。
>>873 理解せずにNULL使うとトラブルの元だから面倒でもつけたほうが良い。
もちろん意図的にNULLが必要な場合は例外。
ただしOracleの場合は事情があってvarchar/charはNOT NULLにしないことが多い。
>>879 6.xあたりからPL/pgSQLってのがあるよ
数値とか日付とかもnot null?
883 :
877 :2005/04/24(日) 19:21:26 ID:nrSc9FZA
>>879 >>881 ありがとうございます。
そのPL/pgSQLを使いたいのですが、
テストで、
DECLARE
wk_a int4;
wk_b int4;
BEGIN
wk_a := 1;
INSERT INTO test(col1) VALUES(wk_a);
wk_b := 1 + wk_a;
INSERT INTO test(col1) VALUES(wk_b);
wk_b := 1 + wk_b;
INSERT INTO test(col1) VALUES(wk_b);
COMMIT;
END;
としてみても、
ERROR: syntax error at or near "int4" at character 15
になります。
何か設定が必要なのかもしれませんが、分からないのです・・・。
>>883 PL/pgSQL は、Oracle の PL/SQL と違い、ストアドファンクションとしてのみ使用可能である。
だそうだ。
例に依って某竜玉と勘違いして来た初心者です. ここはどういったことを扱っているんですか?. 面白そうです
>>885 以前Palmで使われていたモトローラの組み込み用CPUを扱っている
DB管理者とかがよく使う ピンポン ってなんなんだよ・・・・
888 :
NAME IS NULL :2005/04/27(水) 17:14:20 ID:MsG8U0Yr
シラネ(゚з゚)
sage忘れてたorz 吊ってくる
890 :
NAME IS NULL :2005/04/27(水) 21:42:18 ID:g57xEUXE
オラクルなんですけど create procedure でupdate文書きたいんですけど 教えてください
>>890 create or replace
を使いやがれ
892 :
NAME IS NULL :2005/05/04(水) 18:47:23 ID:K+zVstCq
すいません「初めてでもできるASPプログラミング」という本を勉強しているんですが D_FileName = "diary.xml" Set Fs = Server.CreateObject("Scripting.FileSystemObject") IF Fs.FileExists("diary.xml") then Set Ts = Fs.OpenTextFile("diary.xml",8,True) Else Set Ts = Fs.CreateTextFile("diary.xml") set xmlfile = Server.CreateObject("Microsoft.XMLDOM") xmlfile.load "diary.xml" の後が誤植なのか、ありません。 form.htmlというフォームから渡されたForm("sub")等のデータを、 diary.xml に XML形式で保存するというものなのですが、 似たようなサンプルがwebで見当たらず苦労しています。 アドバイスお願いします。
893 :
892 :2005/05/04(水) 20:04:07 ID:???
正誤表発見しました。 お騒がせしました
この! おっちょこちょいがっ!!
すげー勢いだな。この(・∀・)スッドレ!
896 :
NAME IS NULL :2005/05/10(火) 19:27:18 ID:pUjImQmO
MS Accessで改行コードを意図したものじゃない場合の旨いやり方は有りますでしょうか。 UNIXで作成した改行コード\nで作成したファイルを WinxpのAccessでopenステータスを利用して読み込もうとしたのですが、 inputしたデータの改行部が無視されて次の行の分まで含まれていた為 読み込む前に\nを\r\nに変換してしまうか、読込み方法を変更したいのです。
>>896 VBAのお話ですね。というわけで、板違い。
ftpで転送するときに改行コードの変換をしてみるとか
898 :
NAME IS NULL :2005/05/12(木) 23:00:37 ID:oWFiCYu4
株価を研究するのにずっとエクセルを使ってきたのですが、 もっと多くのデータを扱いたいと重いデータベースの導入を考えています。 そこでデータベースの設計について質問があります。 データベースに記録したい内容は、始値 高値 安値 終値・・・などで、 これらのデータを、「銘柄数分」「毎日」記録したいと思っています。 もし、日付をテーブルにしたら(毎日テーブルを新規に作る)、データを利用するときは銘柄ごとに時系列で 追うことが多いので、テーブル間の串刺しが大量におこってしまいます。 また、もし、銘柄ごとにテーブルを作ると、テーブル数が膨大(4000銘柄くらい扱いたい) になってしまいます。 こういった場合、どのように設計するのがいいのでしょうか? 分かりにくい表現があるかと思いますが、よろしくお願いします。
ええっと、なにから説明したらよいのかな... 銘柄テーブルと株価データテーブルをつくって、 株価テーブルには日付カラムと銘柄IDを格納すればよい。 うーんだめだ、噛み砕いて説明できないな。 ところで、株価研究って自前のツールとか、データベースを 使ってやることが一般的なの? よくそういう話を聞くけど。
900 :
NAME IS NULL :2005/05/12(木) 23:46:53 ID:H58fxviT
>>898 銘柄テーブル(
銘柄ID,銘柄名
)
株価テーブル(
銘柄ID,日付,高値,安値,始値,終値
(銘柄ID,日付)はprimary key
)
901 :
898 :2005/05/13(金) 00:28:43 ID:W8Hpy/5x
>>899 >>900 はやいレス、ありがとうございます。
すみません、私の説明が足りてませんでした。
銘柄名は保存しないつもりです。
株には銘柄ごとに固有の銘柄コードがあるので、それを使うつもりです。
(900さんのおっしゃる、一般で通じる銘柄IDみたいなものです)
というわけで、ちょうど
株価テーブル(
銘柄ID,日付,高値,安値,始値,終値
(銘柄ID,日付)はprimary key
)
のところが保存したい部分です。
そして、私が悩んでいるのはこのようにテーブルを設計すると、
データ取得のときにロスが大きくなってしまうのではないのか、ということです。
エクセル的な発想なのですが、1テーブル1銘柄にすれば、多くの場合のデータ取得は
1つの銘柄に対して連続した日のデータを取得するものなので、効率的かな、と思ったのです。
エクセルだとシートごとに銘柄を分けて、1行1日としてデータを記述しておけば、
データのメンテナンスや計算時に楽だったのでそう考えてみました。
できれば複数銘柄を1つのテーブルに入れたくないのですが、この発想自体がデータベース
的ではないのでしょうか?
>>899 そこそこいるとは思います。
近年多くなったデイトレーダーや業績重視で買って長期で持つ人はこういうことはしないでしょうが、
1週間〜2,3ヶ月単位で取引してる人は、こういうことしている人も多いと思います。
>>901 4000銘柄でも年間100万行ぐらいだろ。
Accessでやるなら数年で糞重くなりそうだが、
他のDBMSなら大丈夫でしょ。
あと、銘柄テーブルも作っておいたほうが、後々便利だろうね。
>>901 同じようなものはおなじテーブルに突っ込むのがDB的。
902の人も言ってるけど、数百万件程度なら問題ない。
どうしても分割したければ、年毎に分割すればいいんじゃないかな。
株価分析のプログラムは昔作ったことがあるけど、 条件を変えてバッチ処理を繰り返し流すイメージなんだよね。 DBに格納しようがCSVなどのシーケンシャルファイルに入ってようが やることは一緒で端から読んで1件ずつ処理してゆくことになる。 SQLデータベース的な集計手法は役に立たない。 EXCELのBOOKだけで足りなくなったら、年度や月度ごとにBOOKを作って 複数のファイルから串刺しで集計するバッチプログラムを作るのが現実的。
Lotus 1-2-3で処理しきれなくなっていきなりOracle買ってきて 使い方がわからないと泣き付いてきた自称投資家を思い出した。 OracleはおっきいLotusじゃないんだぞと説教したよ。
907 :
902 :2005/05/13(金) 03:33:26 ID:???
>>905 > SQLデータベース的な集計手法は役に立たない。
どう役に立たないのだろう。
年度毎や月間毎に別ける必要もなく、わざわざ串刺しする必要性もない。
Book管理やファイル管理も省ける。
DB側で集計しなくても、ある銘柄をある期間分抽出してホストプログラムへ
渡せばいいわけだし、あと、元質のところには無いが、出来高も加えて
その集計をDBに任せたりすると、期間別出来高変動なんかも、
1行のSQLでデータは取り出せる。
銘柄テーブルを作って、そこに鉄鋼株とか自動車株などのカテゴリーや
トヨタ自動車グループとかフジサンケイグループなどの企業グループを
識別するカラムを追加して、カテゴリー単位や企業グループ単位の
トレンドライン(?)を出したりするときも、1行のSQLで抽出できる。
って、株も株価分析もやったことないので的外れなことだったらスマソ。
個人が4000銘柄を管理したいと言うことは、多角的に株価を眺めたいん
だろうなと思って、MVCのMの部分が1行のSQLで済ませるのなら楽だと
思ったまでだ。
908 :
NAME IS NULL :2005/05/13(金) 20:29:45 ID:ZTGzA6Xp
Postgresの psql < DB名 〜.sql はmySQLではどのようにやればよいのでしょうか。 ご教示いただけますと幸いです。
909 :
898 :2005/05/13(金) 22:30:45 ID:W8Hpy/5x
おお、さすがものすごい勢い〜スッドレですね。
みなさん、レスありがとうございます。
>>902 >>903 >>906 どうやら私はデータベースというものを甘く見すぎてたみたいです。
私はDBとはエクセルの親分みたいなものだと想像してたのですが(Accessの入門本で住所録とかが多いものですから…)、
数百万間程度なら問題ない、っていうレスを見て驚愕しました。
そんなに大量のデータでも1テーブルで処理できるんですね。
って書いてて思ったんですが、エクセルだと1ブック開くごとに
メモリ上にセル内容をロードしてるから限界があるけど、
DBだとそうしないので、1テーブルで相当数が入るわけですね。
>>904 実際に運用するようになったらそうしてみます。
そのほうがバックアップとかも楽そうですしね
>>905 >>907 これは結構悩みどころですね。
たしかにDBを使わなければ今のスキルで何とかなりそうですが、
DBを導入するとなれば、相当の勉強を覚悟しないとだめですよね。
ブック分散も考えたのですが、興味もあるのでどうせならこの際、
DBの勉強もしようかなと今のところ思っています。
とりあえず少し勉強して、実際SQLでどういったことができるのか(SELECTとかしか知らないorz)、
を知ってみたいです。
4000銘柄(ちなみに今は500銘柄監視くらいです)も管理する理由ですが、多角的に眺めるというより売買チャンスを増やすのが目的です。
それなら全銘柄監視すればいい、ということになるんですが、ある程度の流動性がある株でないと、
買ったはいいが売るに売れない状況(自分が売ることによって株が値下がりしてしまう)になってしまうのです。
なのでそういったことを考慮すると、日本市場だと4000銘柄くらいが分析対象になるかなと思っています。
そしてそれらの銘柄の中で「売られすぎ・買われすぎ」なものを抽出して、売買するって感じですね。
910 :
NAME IS NULL :2005/05/14(土) 18:17:16 ID:8uuv/+F5
こんにちは! postgreSQLのpg_shadowの内容を全部消したら、 postgresスーパーユーザーですらDBにアクセス 出来なくなりました! 修復方法などありますでしょうか?
MySQLです。 物凄い初心者で申し訳ないんですが、 tableAとtableBがあってその二つにはnameレコード(プラキー)がある。 その中から「ぴよゆき」のフィールドを検索するには、 SELECT tableA.name,tableB.name FROM tableA,tableB WHERE tableA.name=tableB.name AND tableA.name="ぴよゆき" これでダメなんですが、どうしたらいいでしょうか?
漢字つーか、全角。 アルファベットでやってもだめなのかどうか
914 :
データベース初心者 :2005/05/16(月) 18:24:44 ID:oIkLPVZj
質問です。 あるクラスの生徒の食べ物の好みをデータベースにしたいのですが、 ラーメン、餃子、レバニラ炒め、ハヤシライス等の食べ物リストがあり、 各生徒はそれらの食べ物から好きな物を選びます。複数選択可能です。 これをデータベースで表現するとどうすれば良いでしょうか?
915 :
NAME IS NULL :2005/05/16(月) 18:42:56 ID:5aaoni6l
証券会社に就職がきまったのですが、SQLとか学んだほうが いいですか? 職種は、債権ディーラーなんですが。
916 :
データベース初心者 :2005/05/16(月) 18:45:20 ID:oIkLPVZj
補足) 食べ物の種類は100種類ぐらいあります。
917 :
データベース初心者 :2005/05/16(月) 18:57:12 ID:oIkLPVZj
>>915 私みたいなのが言うのもなんですがマイクロソフトアクセス使えます。
みたいなこといえれば、お、できる奴、って思われるんじゃないですかね。
なんで覚えておいたほうが良いと思いますよ。
>>914 生徒テーブル
--------------
PK 生徒ID
生徒名
食べ物テーブル
--------------
PK 食べ物ID
食べ物名
好みテーブル
--------------
PK 生徒ID
PK 食べ物ID
この程度の基本的な事が解らないのか・・・・
データモデリングについての本で勉強した方が良いぞ。
919 :
データベース初心者 :2005/05/16(月) 21:09:07 ID:oIkLPVZj
>>918 ああ、なるほど〜〜そうすればいいんですね・・・
ちゃんとデータモデリングについて勉強します・・・・お勧めの本ありますか?
920 :
918 :2005/05/16(月) 21:14:25 ID:???
921 :
データベース初心者 :2005/05/16(月) 21:25:55 ID:oIkLPVZj
>>920 ご丁寧にありがとうございます。恐縮です。
そちらのスレ、ちょっと覗きましたが奥が深そうですね・・データベースって・・・・
溺れないように頑張ります・・・・
922 :
NAME IS NULL :2005/05/16(月) 21:57:57 ID:BP31J9XN
画像掲示板を作ろうと思います。 元々は自分が持っている100万枚のエロ画像を管理するために データベースを構築していたのですが、 それを応用して画像掲示板を作り、みなさんにも使ってもらおうと思っています。 でもまだ名前がないので、みなさんで考えてください。 でも「ちゃんねる」がつかない名前でお願いします。
間違ってないと思うが、、両方に含まれてるものだけを出力するんだよね?
>>924 そうです。
会員登録やログインページの型を作るつもりなんです。
で、登録画面で入力された値が既存しないかどうか確認するために
$sql="SELECT name FROM tableA WHERE name = '"._es($_SESSION["name"])."'";
ってやって、これだとうまくいくんですが、
$sql="SELECT tableA.name,tableB.name FROM tableA,tableB
WHERE tableA.name=tableB.name
AND tableA.name = '"._es($_SESSION["name"])."'";
これだとダメなんです。
エラーはでません。
$sql="SELECT name FROM tableB WHERE name = '"._es($_SESSION["name"])."'"; のほうはどうなんだ?
以下のようなテーブルがあるとします。(このテーブルは既存のもので変更できません) CREATE TABLE t ( id, /* プライマリキー */ regdate, /* 登録日。ユニークとは限らない */ user, /* ユーザID */ name, /* 名前 */ addr, /* 住所 */ ... ); ここで、 1) ある条件を満たすユーザの集合における 2) そのユーザの最新のレコード を取得しようとしています。が、SQLを書いてみるとやけにややこしいモノになってしまいました。(SELECTが4回……) もう少しシンプルにしたいのですが、何か方法はありますか? なお、環境はOracle8iです。(オプショナルなモジュールは入っていないので、分析関数等は使えません) SELECT * FROM t WHERE id IN ( SELECT MAX(id) FROM t, ( SELECT MAX(regdate) max_regdate, user FROM t GROUP BY user HAVING user IN ( SELECT DISTINCT user FROM t WHERE 条件式 ) ) t2 WHERE t.user = t2.user AND t.regdate = t2.max_regdate ) ORDER BY regdate DESC;
928 :
927 :2005/05/17(火) 18:06:57 ID:???
済みません、訂正です。(下から2行目のGROUP BYが抜けた) SELECT * FROM t WHERE id IN ( SELECT MAX(t.id) FROM t, ( SELECT MAX(regdate) max_regdate, user FROM t GROUP BY user HAVING user IN ( SELECT DISTINCT user FROM t WHERE 条件式 ) ) t2 WHERE t.user = t2.user AND t.regdate = t2.max_regdate GROUP BY t.user ) ORDER BY regdate DESC;
929 :
927 :2005/05/17(火) 18:07:41 ID:???
済みません、訂正です。(下から2行目のGROUP BYが抜けた) SELECT * FROM t WHERE id IN ( SELECT MAX(t.id) FROM t, ( SELECT MAX(regdate) max_regdate, user FROM t GROUP BY user HAVING user IN ( SELECT DISTINCT user FROM t WHERE 条件式 ) ) t2 WHERE t.user = t2.user AND t.regdate = t2.max_regdate GROUP BY t.user ) ORDER BY regdate DESC;
930 :
927 :2005/05/17(火) 18:09:27 ID:???
済みません、訂正です。(下から2行目のGROUP BYが抜けた) SELECT * FROM t WHERE id IN ( SELECT MAX(t.id) FROM t, ( SELECT MAX(regdate) max_regdate, user FROM t GROUP BY user HAVING user IN ( SELECT DISTINCT user FROM t WHERE 条件式 ) ) t2 WHERE t.user = t2.user AND t.regdate = t2.max_regdate GROUP BY t.user ) ORDER BY regdate DESC;
931 :
927 :2005/05/17(火) 18:10:18 ID:???
済みません、多重投稿に……orz
>>927 一般的にはregdateとuserでユニークと考えていいように思うのですが、
max(id)という記述があるからユニークじゃないのでしょうか?
regdateとuserでユニークならばもう少しシンプルになると思います。
また同じuserで複数のregdateがある意味が履歴以上の意味を持ってない場合は、
履歴用のテーブルを別にして現在アクティブのuserだけのテーブルをつくれば
きわめてシンプルでパフォーマンスも良くなります。
>>927 このスレでもさんざん外出だが…
select * from t as t1
where 条件
and not exists (
select * from t
where user = T1.user
and (( regdate > T1.regdate ) or
( regdate = T1.regdate and id > T1.id ))
)
934 :
927 :2005/05/18(水) 00:59:07 ID:???
情報大変感謝。
>>932 残念ながら、userとregdateでユニークであることは保証されていません。実用上はそう簡単には生じないはずなんですけど、テストデータで問題が発現してしまったので対応せざるを得ず(^^;
あと、テーブル構造を変更したいのは山々なんですが、既存システムへの影響が大き過ぎて断念しますた。
>>933 う゛、このスレで既出だったんですか。さんざんいろんなパターンでぐぐって見付けられなかったんですが、正に灯台元暗し。
最大値==MAX()と視野狭窄してたもので……。[not] existsは使ったことがなかったので大いに参考になりました。
大学のサークル内で各自作成したデータを、Web上に日付順にアップロード するようなシステムを構築したいのですが適した方法はありませんか? またその際、サークル内で決めたID・パスワード等を用いてログインする ことで、アクセス制限させるようにしたいと思っています。 分かりにくい質問ですみません。 データベースとは直接関係ないことですができれば教えてください。
>データベースとは直接関係ないことですが よくわかってるじゃないか
937 :
NAME IS NULL :2005/05/20(金) 21:03:41 ID:WRX51hc3
Access(ADO)+SQL2Kで開発しようと思ってるんですが、 どこをADO(VBA)で、どこをSP(SQL2K)で開発すると 速度上がりますか? ADO(VBA)とSP(ストアド)の住み分けがわかりません。 ばかで申し訳ありませんが、教えて下さい。
>>937 処理実行速度に関しては、
ストアドだとDBMSが効率的な手段とタイミングで処理しますが、
VBAだと、これらは制作者に委ねられ、DBMSからAccessへのデータ転送が発生します。
よって一般にストアドの方が高速実行となりますが、SQLを書く腕にも大きく左右されます。
また、処理開発効率に関しては、
SQLの方が表現力が低い分、一般に後に戦うべきバグが少なくなりストアドの方が楽になりますが、
処理の複雑さと規模が小さい場合には、VBAの方が手早く柔軟性も高いでしょう。
よって一般にストアドが効率的開発に向きますが、仕様やSQLの腕にも大きく左右されます。
939 :
NAME IS NULL :2005/05/21(土) 00:32:22 ID:4HJtkX17
OracleでMySQLで言うHHH:MM:SSみたいな形式って使用できるんでしょうか?
VBでADOとかODBCとかでPostgreSQLに接続して グリッドに表示したり変更したりできるようになりました。 更に制約違反になる操作をしたら、それに応じたエラーメッセージを表示しようとしてます。 が、ConnectionのErrorsのDiscriptionにはちゃんとしたエラーメッセージが入ってるのに、 Numberがいつも-2147467259(80004005)なんです。 -2147467259という数字に関しては様々な記述がありますが、 こういう状況に関する物は見付かりません。 制約違反って全部同じエラーコードなんですか? そうでなければ、ちゃんとしたエラーコードってどうやったら取得できるのでしょうか?
942 :
939 :2005/05/21(土) 01:16:37 ID:???
>>940 Oracleでも使えるんですね。
ありがとうございました。
943 :
NAME IS NULL :2005/05/21(土) 01:58:09 ID:1pDzoEyj
私は現在、フリーペーパー事業の会社に勤務しています。 システム部が作成するアクセスは1つのテーブルで、 契約書No.で顧客管理と売上管理をすると 方法を考えているようです。 でもその場合ですと ・再度契約した場合に異なる契約書No.に 同じ契約者の(データ)がある。 という事になり、同じ契約者に対して 複数の契約書No.を管理することになり、 売上集計はまだいいのですが、 旅行券発行枚数等の顧客別の集計を取る際は、 いろいろ面倒ではないかと感じました。 それよりも顧客管理と売上等の契約書No.管理は 全く別ものであるから、アクセスで 下記の2つテーブルを作成し、 @顧客ID(重複番号無し)をつけて顧客(契約者)の 住所・電話番号・業種等を管理するするテーブル A契約書No.(重複番号無し)で売上・旅行券発行等管理をし、 なおかつ見積書発行・請求書発行等を作成できるテーブル Aのテーブルに顧客IDを連動(クエリー?)させたら 顧客別の売上・旅行券の発行枚数・契約回数等の 管理やデータ収集もでき、売上全体に対する顧客別割合等の 集計等もだしやすいのでは? と考えました。 私の考え方は、間違っているのでしょうか? アクセスは聞きかじり程度の知識しかありません。 どなたかご教授をお願い申し上げます。
>>943 フリーペーパーと旅行券の繋がりや、
契約書No.の意味や、どういう用途に使いたいのか等わかりませんが、
1テーブル案は間違いなく不適切なので、一度2テーブル案で作ってみる
ことをおすすめします。Accessなら手間もかからないかと思います。
99%以上が一見客、かつ顧客情報として持つべきデータが少ない とかなら不適切とも言い切れない