[228] InterBaseでGROUP BY とBLOB項目について 投稿者:KAZ 投稿日:00/05/24(Wed) 23:17

どうやらSELECTで参照している項目のうち集計項目以外を全てGROUP BY
に追加すれば良いようです。
SELECT Customer.ID,COUNT(TakingResheet.ID)AS WelcomeCount,Customer.KanaLastName
FROM Customer LEFT OUTER JOIN TakingResheet ON Customer.ID=TakingResheet.Customer
GROUP BY Customer.ID,Customer.KanaLastName

ID WELCOMECOUNT KANALASTNAME
=========== ============ ================
1 2 A 2 1 A 3 2 A 4 0 A 5 0 A しかしBLOB項目「Memo」を加えると
SELECT Customer.ID,COUNT(TakingResheet.ID)AS WelcomeCount,Customer.KanaLastName
FROM Customer LEFT OUTER JOIN TakingResheet ON Customer.ID=TakingResheet.Customer
GROUP BY Customer.ID,Customer.KanaLastName


-413 conversion error from string "<string>"(文字列"<string>" の変換エラー)
が出てしまいます。
そう言えばBDEの時もBLOBはこういうSQLで何かと問題になっていたような…


[227] 指定した行数を取得 投稿者:olive 投稿日:00/05/23(Tue) 18:32

こんにちは質問させて下さい。
データベースはACCESSです。order byで並べ替えをして1〜10行目までのデータを取得したいのです。
OracleやSQLServerではできる(?)と聞いたのですが、ACCESSではどんなSQL文を書けばいいのでしょうか?なにか関数とかがあるのでしょうか?
よろしくお願いします。


[262] Re: 指定した行数を取得 投稿者:ひろ 投稿日:00/08/04(Fri) 13:36

> こんにちは質問させて下さい。
> データベースはACCESSです。order byで並べ替えをして1〜10行目までのデータを取得したいのです。
> OracleやSQLServerではできる(?)と聞いたのですが、ACCESSではどんなSQL文を書けばいいのでしょうか?なにか関数とかがあるのでしょうか?
> よろしくお願いします。

TOPというのがあるので、これを使えば出来ると思います。

例:
SELECT TOP 10 EMPTBL.*
FROM EMPTBL
ORDER BY EMPTBL.EMPNO


[226] 脱字? 投稿者:truth 投稿日:00/05/22(Mon) 13:16

たぶん…気づかなくても良いような脱字だと思うんですが…。
本書第7版のP.142の「メモ」の欄
「このクエリーでは、GROUP BY句によってグループ化が行わたあと、」
は、
「このクエリーでは、GROUP BY句によってグループ化が行われたあと、」
の間違いでは?
…ホントにどうでもいい間違いだとは思うんですが。(^_^;
アゲアシをとるようですいません。(苦)


[225] 無題 投稿者:KAZ 投稿日:00/05/16(Tue) 09:32

BCB5に付属するInterBase5.6とTIBxxxx系InterBase専用データアクセスコンポーネントを
使ってプログラムミングしようとしています。
付属のツール「Server Manager」を使ってデータベースを作成することが出来ます。
あとはDDL SQLでCREATE TABLEとか出来るようになりましたが、
DDL SQLの CREATE DATABASEをつかってデータベースを作成を自動化したいのですが

CREATE DATABASE 'D:\InterBaseTest\PROGRAM.GDB'
USER 'KAZ2' PASSWORD 'kaz2';

を実行すると実行時エラーで
Dynamic SQL Error
SQL Error code=-530
Cannot prepare a CREATE DATABASE/SCHEMA statement

このSQLエラーコードの意味は
-530 violation of FOREIGN KEY constraint: "<string>"
(FOREIGN KEY 制約"<string>" に違反しています)
335544466L

という奴らしいです。

できればSQLでデータベース作成とユーザ、パスワードも定義したいのですが。

「データ定義ガイド」によれば
DSQLでは,CREATE DATABASE は,EXECUTE IMMEDIATE と一緒に指定しなければ
実行できません。データベースハンドルおよびトランザクション名がある場合は,使用
の前にゼロに初期化する必要があります。
CREATE DATABASE の構文は次のとおりです。
CREATE {DATABASE | SCHEMA} " filespec"
[USER " username" [PASSWORD " password"]]
[PAGE_SIZE [=] int]
[LENGTH [=] int [PAGE[S]]]
[DEFAULT CHARACTER SET charset]
[ <secondary_file>];
<secondary_file> = FILE " <filespec>" [ <fileinfo>] [ <secondary_file>]
<fileinfo> = LENGTH [=] int [PAGE[S]] | STARTING [AT [PAGE]] int [ <fileinfo>]

どうやらEXECUTE IMMEDIATE と一緒に指定しなければならないようですその構文は

EXECUTE IMMEDIATE [TRANSACTION transaction]
{: variable | 'string' [USING SQL DESCRIPTOR xsqlda];

引数説明
TRANSACTION transaction実行の対象となるトランザクションを指定します。

:variable実行するSQL 文が収められているホスト変数

'string'するSQL 文が収められている文字列リテラル
USING SQLDESCRIPTOR文のパラメータに対応する値を,指定したXSQLDA から
抽出することを指定します。
xsqlda XSQLDA のホスト言語変数

ということで最初に書いたSQLを
EXECUTE IMMEDIATE "CREATE DATABASE 'D:\InterBaseTest\PROGRAM.GDB'
USER 'KAZ2' PASSWORD 'kaz2'";
とかいてみました。するとエラーメッセージ
Dynamic SQL Error
SQL error code = -104
Token unknown - line 1,char 8
IMMEDIATE

どうやら構文エラーらしいです。何か構文が間違ってますか?


[224] GROUP BY でNULLとNULL以外を集計 投稿者:tsujii 投稿日:00/05/02(Tue) 17:40

ある項目がNULLとNULL以外で表全体を集計したいのですが、
ORDER BYなどで可能ですか?


[275] Re: GROUP BY でNULLとNULL以外を集計 投稿者:tohzai 投稿日:00/08/14(Mon) 10:38

> ある項目がNULLとNULL以外で表全体を集計したいのですが、
> ORDER BYなどで可能ですか?

GROUP BYではできませんが、下記の方法で集計できます。

select distinct isnull(nullcol) as 'null?',
(select sum(t1.calccol) from tbl as t1
where isnull(t1.nullcol)=isnull(t2.nullcol)) as subtotal from tbl as t2;

実行結果をお知らせください。


[222] この構文どこが間違ってるの? 投稿者:ありす 投稿日:00/04/27(Thu) 23:38

Datasource:A97ODBC
Template:cq_UPDATE.htx
SQLStatement:UPDATE T_SunCQ
+SET T_SunCQ.RepNo = '%RepNo%', T_SunCQ.Date = #%Date%#, T_SunCQ.ReplyRegDate = #%ReplyRegDate%#, T_SunCQ.Name = '%Name%', T_SunCQ.Contents = '%Contents%'
+WHERE T_SunCQ.ID = %ID%

上記の構文エラーがでるんです。'クエリー"##"の日付の構文エラーです。’とでるんです。私はSQL構文の規則はよくわからないのでいつも
Accessのほうからヒントを得て作成しているのですが半角スペース
をとったりつけたりしてなにをしてもエラーがでるんです。
どうか教えてください。


[223] Re: この構文どこが間違ってるの? 投稿者:iwa 投稿日:00/04/28(Fri) 12:32

> 上記の構文エラーがでるんです。'クエリー"##"の日付の構文エラーです。’とでるんです。私はSQL構文の規則はよくわからないのでいつも
> Accessのほうからヒントを得て作成しているのですが半角スペース
> をとったりつけたりしてなにをしてもエラーがでるんです。
> どうか教えてください。

DBが何をつかっているのかわかりませんが、ACCESSではないようなので
とりあえず、#で囲むのはやめましょう。使用しているDBによって
文字列を日付型に変換してくれる関数があるはずなのでそれを使ってください。Oracleならto_date('2000-04-28', 'yyyy-mm-dd')とやります。


[220] 文字の変換関数について 投稿者:ぽん 投稿日:00/04/25(Tue) 18:47

こんにちは。
INFORMIXに対してSQL文を発行するときの、select句にどう記述すれば
よいかを教えてほしいのです。
ちなみにINFORMIXのマニュアルは手元にありません。
内容は下記の通りです。

カラムAの値がXなら1、それ以外なら0を表示する。

というようなものをselect句に書きたい場合、ORACLEですと、
decodeなる関数を使用しますよね。
どなたかご存知の方いらっしゃいませんか?


[269] Re: 文字の変換関数について 投稿者:haihong 投稿日:00/08/08(Tue) 11:06

> こんにちは。
> INFORMIXに対してSQL文を発行するときの、select句にどう記述すれば
> よいかを教えてほしいのです。
> ちなみにINFORMIXのマニュアルは手元にありません。
> 内容は下記の通りです。
>
> カラムAの値がXなら1、それ以外なら0を表示する。
>
> というようなものをselect句に書きたい場合、ORACLEですと、
> decodeなる関数を使用しますよね。
> どなたかご存知の方いらっしゃいませんか?


[218] INSERT INTOについて 投稿者:コウ 投稿日:00/04/21(Fri) 15:19

はじめまして。質問です。
現在PL/SQLパッケージの中で以下のようなソースを書いているのですが
うまくテーブルにデータが追加されません。どこが悪いのでしょうか、
まだSQL初心者なので良く分かりません。どなたか教えて下さい。

INSERT INTO TBD_SIWAKE_SYUKEI (
  SHOP_CODE,
  SYUKEI_CODE,
  TO_DATE,
  FROM_DATE,
  CNT,
  KIN,
  UPDATE_TIME)
  VALUES (
  shop_code_in,
  syukei_code_in,
  end_date_in,
  start_date_in,
  w_shop_cnt,
  w_shop_azukari,
  sysdate);
  commit;

VALUESの中の変数には値が入っています。これは確認済みです。


[219] Re: INSERT INTOについて 投稿者:iwa 投稿日:00/04/25(Tue) 09:11

データ型がまちがっていないですか?


[221] Re^2: INSERT INTOについて 投稿者:コウ 投稿日:00/04/26(Wed) 14:25

> データ型がまちがっていないですか?

そのようでした。
お騒がせして申し訳ありませんでした。
また、わざわざお答え頂き誠にありがとうございました。

今後も宜しくお願い致します。


[217] substr にあたる関数 投稿者:ぽん 投稿日:00/04/19(Wed) 17:11

質問です。
SQLで、ORACLEとかにはSUBSTRという関数がありますよね。
文字列を抜き出すやつ。
ところでINFORMIXでこれをつかうと、文法エラーとなります。
INFORMIXでは対応していないんですかね。
かわりになる関数ってあるんでしょうか。

お願いします。


[216] 小さな脱字 投稿者:圭子 投稿日:00/04/14(Fri) 18:37

この1週間SQLプログラミング入門を読ませて頂きました。
第5刷発行を読み終えて誤字脱字情報とチェックしたのですが
P.331のLesson6の6の解答で列名を別名にしてある箇所で
QUANITY となっているのですが OUANTITY の初めの
T が抜けているのではないでしょうか?
ちなみにクエリー自体を小文字で、別名を大文字で記述してありますが
表の列名が大文字で作成されてあるのならば別名をわざわざ記述しなくてもよいのではないでしょうか?
それとも別名の記述方法の一例をのせてあるだけなのでしょうか?
あまり大した問題でもないのですが自分の考え違いかと気になり投稿させて頂きました。


[215] FETCHとSELECTについて 投稿者:たけ 投稿日:00/04/14(Fri) 14:06

はじめまして、19歳専門学校せいです。
さっそくお尋ねしたいのですが、どうしても、FETCHとSELECTの違いがよくわかりません。どういうときにFETCHとSELECTを使うのですか?まだ勉強し始めてあまり詳しくないので、わかりやすいように教えていただければありがたいです。


[214] SQL3:配列の使い方 投稿者:もりもり 投稿日:00/04/11(Tue) 18:38

はじめまして。
DBMSをOracle8iとSQL3(SQL99)を使用してDB設計を考えています。
SQL3を規格を調べていると、ARRAY型(配列)・STRUCT等が使用
できるようなのですが、実際の使用方法がわかりません。
(作成の仕方)
分かる人がいたら、教えて頂きたいのですが・・・。
できれば、構築のSQLを掲載してほしいです。

以上、宜しくお願い致します。


[213] group by句について 投稿者:まつ 投稿日:00/04/10(Mon) 14:11

group by句の使い方について お尋ねします。

確か group by句を使う時 SELECT文で使える項目は
group by句で定義した項目に限るような気がしたのでしたが
おぼろげでわからなくなってしまいました・・・

group by句に定義できるのが、SELECT文で使用されている項目でしたっけ?

たとえば
select 社員 氏名 年齢 SUM(残業時間) from 社員表
group by 社員
でOKなのでしょうか?

記憶が正しければ、select文で指定する項目は group by句にある項目
に限るような気がするのですが・・・
select 社員 氏名 年齢 SUM(残業時間) from 社員表
group by 社員 氏名 年齢
と 氏名、年齢も必要なくても書かなくていけなかったような気がするので

よろしくおねがいします。


[209] 一番大きいデータのみを取得するには? 投稿者:BELL 投稿日:2000/03/30(Thu) 10:43

SQL文であるテーブルに管理番号が入っていてその
管理番号の一番大きいデータのみを取得したいのですが
どの様に記述すればよいのでしょうか?

Order Byだと全部持ってきてしまうので嫌なのですが...

宜しくお願いいたします。


[212] Re: 一番大きいデータのみを取得するには? 投稿者:謎の宇宙人 投稿日:00/03/31(Fri) 13:44

こんにちは。謎の宇宙人です。

> SQL文であるテーブルに管理番号が入っていてその
> 管理番号の一番大きいデータのみを取得したいのですが
> どの様に記述すればよいのでしょうか?
>
> Order Byだと全部持ってきてしまうので嫌なのですが...
>

SELECT文の条件に

WHERE 管理番号 = (SELECT MAX(管理番号) FROM 〜)

としてみては?
レスポンスは保証しませんが。。。

ではでは。。。


[208] 失礼しました 投稿者:おっさん 投稿日:2000/03/29(Wed) 18:52

レコードセットが更新できないおっさんです。
いわゆる「主キー」を設定して解決しました。
とんでもない投稿でした。
勉強して、出直します。

草々

http://www.kankyohozen.com


[207] 複数クライアントから空き番号に同時登録 投稿者:Nao 投稿日:2000/03/29(Wed) 10:38

はじめまして、Naoと申します。
さっそくですが質問があります。よろしくお願いします。

型番 商品名
AA001 あいうえお
AA002 あいうえお
AA004 あいうえお
BB001 かきくけこ
BB002 かきくけこ

この様なテーブルがあった場合に、AA003の型番が空いている事を検索
して、登録する様なものを作ろうとしています。

今組んでいるロジックは
1:AA型番のリストを作成する。
2:1のリストから空きを検索する。
3:レコードを作成し、登録する。

という方法です。
しかし、この場合1の処理を複数クライアントが同時に実行した
場合、3の処理で同じ型番を登録しようとしてしまいます。

1回のINSERT文で、空き番号を検索しつつ登録する様なSQL文を
書けないでしょうか。
よろしくお願い致します。

http://kurohime.pos.to/


[206] SELECT〜rownum〜order by... 投稿者:すないぱー 投稿日:2000/03/27(Mon) 15:17

みなさん、はじめまして。

仕事でNT+ORACLE8.0.4を使っています。

で、質問なのですが、
SELECT文の中で、「rownum<=件数」と「order by ソートキー」を指定した場合の検索結果は、
1.件数分取得後、ソートキーでソート
2.ソート後のデータを件数分取得
のどちらになるのでしょうか?
・・・って、1番の方だった気もしますが(^^;
これを、2番の結果にしたいときは、どうしたら良いのでしょうか?

皆さんのお知恵を拝借させてくださいm(__)m


[211] 自己レス 投稿者:すないぱー 投稿日:00/03/30(Thu) 15:35

下記、解決しました。

> で、質問なのですが、
> SELECT文の中で、「rownum<=件数」と「order by ソートキー」を指定した場合の検索結果は、
> 1.件数分取得後、ソートキーでソート
> 2.ソート後のデータを件数分取得
> のどちらになるのでしょうか?
> ・・・って、1番の方だった気もしますが(^^;
> これを、2番の結果にしたいときは、どうしたら良いのでしょうか?

INDEXを使用できるようにキーを追加、表を作成し直して対応しました。


[205] おっさんの疑問 投稿者:おっさん 投稿日:2000/03/24(Fri) 18:01

SQLサーバーのデスクトップエディションを使い始めました。データをインポートして、アクセス2000で接続して、扱おうとしました。
「このレコードセットは更新できません」ということで、先へ進めません。なぜでしょうか?本を読んでもわかりません。初歩の疑問で恐縮ですが、教えてください。

http://www.kankyohozen.com


[232] Re: おっさんの疑問 投稿者:システム屋さん 投稿日:00/05/31(Wed) 10:02

> SQLサーバーのデスクトップエディションを使い始めました。データをインポートして、アクセス2000で接続して、扱おうとしました。
> 「このレコードセットは更新できません」ということで、先へ進めません。なぜでしょうか?本を読んでもわかりません。初歩の疑問で恐縮ですが、教えてください。

はじめまして。
SQLサーバーにデータをインポートして、Accessでリンクをはって
データを加工しようとした時、と認識してよろしいでしょうか?
そうであれば恐らくそれは、更新するテーブルにキーの設定がないため
だと思います。SQLサーバーでキーの設定をして見てください。


[202] 突然ですが... 投稿者:とーる 投稿日:2000/03/21(Tue) 10:46

どーも はじめまして 私は 新米SE です。

最近 よくSQLを 使っていると エラーメッセージで ”コアダンプしました。”と でるのですが、どういう意味なのか解りません。

どなたか "コアダンプ" の意味 教えて頂けないでしょうか?


[203] Re: 突然ですが...(コアダンプについて) 投稿者:由布子 投稿日:2000/03/21(Tue) 15:29

> 最近 よくSQLを 使っていると エラーメッセージで ”コアダンプしました。”と でるのですが、どういう意味なのか解りません。
>
> どなたか "コアダンプ" の意味 教えて頂けないでしょうか?

不正な処理を行って、プログラムがクラッシュしたと言うことです。
core という名前のファイルが出来ていると思います。
これを使って、どこで落ちたのかを調べることが出来ます。


[204] Re^2: 突然ですが...(コアダンプについて) 投稿者:とーる 投稿日:2000/03/21(Tue) 15:37

>> 最近 よくSQLを 使っていると エラーメッセージで ”コアダンプしました。”と でるのですが、どういう意味なのか解りません。
>>
>>どなたか "コアダンプ" の意味 教えて頂けないでしょうか?
>
> 不正な処理を行って、プログラムがクラッシュしたと言うことです。
> core という名前のファイルが出来ていると思います。
> これを使って、どこで落ちたのかを調べることが出来ます。
>
由布子さん ありがとうございました。 また わからないことが あったら
教えて下さい。 宜しくお願いします。


[201] 表の拡張の仕方を教えてください。 投稿者:みか 投稿日:2000/03/15(Wed) 12:53

ORACLE8を使用していて
ORA-01652: 一時セグメントを拡張できません(140分、表領域: EAI_DATA)。
というエラーが返ってきてしまいます。
どうしたら良いか教えてください。


[198] SELECT文について 投稿者:ヒデ 投稿日:2000/03/07(Tue) 16:59

ORACLEを使用していますが、まだ初心者です。
SELECT文でSELECT数の限定ってできます?
つまりwhereの条件にあてはまったデータが
100件あるならばはじめの50件だけSELECTしたいのです。
誰か教えて?
もしできないなら他の方法はあります?


[199] Re: SELECT文について 投稿者:謎の宇宙人 投稿日:2000/03/07(Tue) 17:56

ども、謎の宇宙人と申します。

> ORACLEを使用していますが、まだ初心者です。

私も初心者です。一緒にがんばりましょう。

> SELECT文でSELECT数の限定ってできます?
> つまりwhereの条件にあてはまったデータが
> 100件あるならばはじめの50件だけSELECTしたいのです。
> 誰か教えて?
> もしできないなら他の方法はあります?

SELECT文のWHERE句の条件に
ROWNUM <= 50 を付けてみてください。

ROWNUM、ROWIDは、使い方次第で結構便利です。
調べてみてね。

ではでは。。。


[200] Re^2: SELECT文について 投稿者:ヒデ 投稿日:2000/03/07(Tue) 21:22

謎の宇宙人さん、どうもありがとうございました。
さっそく、試してみます。
また、わからないことありましたら
質問しますんでよろしくお願いします。


[196] IsNull・・・ 投稿者:しんいち 投稿日:2000/03/03(Fri) 17:44

A:倉庫商品テーブル B:店舗商品テーブル

この二つのテーブルを使って、各商品の在庫合計を出したいのですが、

SELECT A.SyohinCd, A.Zaiko+iif(IsNull(B.Zaiko),0,B.Zaiko) AS ZaikoGoukei FROM A LEFT JOIN B ON A.SyohinCd = B.SyohinCd;

これだと、IsNullには2つの引数が必要です、となります。
2つの引数ってなんでしょう?
ちなみに、Bにある商品はAには必ずあるとします。

よろしくお願いします。


[195] ログの削除 投稿者:さち 投稿日:2000/03/02(Thu) 15:50

トランザクションログの削除をしたいのですが、

BACKUP LOG DBNAME TO DISK = 'C:\backup.bak'

これでバックアップまでしてくれるのでしょうか?
教えてください。


[187] こんな抽出できます? 投稿者:ank 投稿日:2000/02/29(Tue) 12:56

はじめましてAnkです。よろしくお願いします。

こんな抽出をしたいのですが...

売り上げTBL  従業員TBL
NO       社員ID
営業担当者ID  氏名
出荷担当者ID

この2つのテーブルで検索するのですが、
一発で営業担当者名と出荷担当者名って取れるの
でしょうか?

よろしくお願いします。


[188] Re: こんな抽出できます? 投稿者:謎の宇宙人 投稿日:2000/02/29(Tue) 14:38

ども、はじめまして。謎の宇宙人と申します。

> 売り上げTBL  従業員TBL
> NO       社員ID
> 営業担当者ID  氏名
> 出荷担当者ID
>
> この2つのテーブルで検索するのですが、
> 一発で営業担当者名と出荷担当者名って取れるの
> でしょうか?

従業員テーブルを2つ使えばできると思います。

SELECT
B.氏名 AS 営業担当者名,
C.氏名 AS 出荷担当者名
FROM
売り上げTBL A, 従業員TBL B, 従業員TBL C
WHERE
A.営業担当者ID = B.社員ID AND
A.出荷担当者ID = C.社員ID

こんな感じでどうでしょう?


[189] Re^2: こんな抽出できます? 投稿者:ank 投稿日:2000/02/29(Tue) 15:09

はじめまして、宇宙人さん、ありがとうございます。
試させてもらいました。

ただ、これだと両方にデータが入っていないと、取れませんよね。
営業と出荷担当が同一人物だったりすると、どちらかしか入って
いない事があるんですよ。
そういう時、レコードが消えてしまいなすよね。
これってなんとかならないんですか?

なんか、いきなりお願い口調になって恐縮です、
分かるようでしたら教えて下さい。

> ども、はじめまして。謎の宇宙人と申します。
>
>>売り上げTBL  従業員TBL
>>NO       社員ID
>>営業担当者ID  氏名
>>出荷担当者ID
>>
>>この2つのテーブルで検索するのですが、
>>一発で営業担当者名と出荷担当者名って取れるの
>>でしょうか?
>
> 従業員テーブルを2つ使えばできると思います。
>
> SELECT
> B.氏名 AS 営業担当者名,
> C.氏名 AS 出荷担当者名
> FROM
> 売り上げTBL A, 従業員TBL B, 従業員TBL C
> WHERE
> A.営業担当者ID = B.社員ID AND
> A.出荷担当者ID = C.社員ID
>
> こんな感じでどうでしょう?
>


[190] Re^3: こんな抽出できます? 投稿者:謎の宇宙人 投稿日:2000/02/29(Tue) 16:38

ども、謎の宇宙人です。

>ただ、これだと両方にデータが入っていないと、取れませんよね。
>営業と出荷担当が同一人物だったりすると、どちらかしか入って
>いない事があるんですよ。

やっぱりそうでしたか、、、(^^;
そんな気はしていたのですが、長文になるので止めてしまいました。
では改めて、

外部結合してみてはどうでしょう。

SELECT
B.氏名 AS 営業担当者名,
C.氏名 AS 出荷担当者名
FROM
売り上げTBL A, 従業員TBL B, 従業員TBL C
WHERE
A.営業担当者ID = B.社員ID(+) AND
A.出荷担当者ID = C.社員ID(+)

ちょっと自信ないな〜。。。
まぁ、試してみてくださいな。
ではでは。。。


[191] お〜〜、出来た〜〜〜 投稿者:ank 投稿日:2000/02/29(Tue) 17:03

ありがとうございます。
出来ました〜〜〜。
いや〜、助かりました〜〜〜。
さすが、宇宙人(意味なし)

いや、まじめにありがとうございます。
今後ともよろしく。

> ども、謎の宇宙人です。
>
> >ただ、これだと両方にデータが入っていないと、取れませんよね。
> >営業と出荷担当が同一人物だったりすると、どちらかしか入って
> >いない事があるんですよ。
>
> やっぱりそうでしたか、、、(^^;
> そんな気はしていたのですが、長文になるので止めてしまいました。
> では改めて、
>
> 外部結合してみてはどうでしょう。
>
> SELECT
> B.氏名 AS 営業担当者名,
> C.氏名 AS 出荷担当者名
> FROM
> 売り上げTBL A, 従業員TBL B, 従業員TBL C
> WHERE
> A.営業担当者ID = B.社員ID(+) AND
> A.出荷担当者ID = C.社員ID(+)
>
> ちょっと自信ないな〜。。。
> まぁ、試してみてくださいな。
> ではでは。。。
>


[186] 同テーブルでの重複行の削除 投稿者:taro 投稿日:2000/02/29(Tue) 10:14

指定した複数のフィールドがすべて重複した行を削除したいのですが
どのようなSQLで実現できるでしょうか?


[276] Re: 同テーブルでの重複行の削除 投稿者:tohzai 投稿日:00/08/14(Mon) 11:09

> 指定した複数のフィールドがすべて重複した行を削除したいのですが
> どのようなSQLで実現できるでしょうか?

はじめまして。ご参考までに。

DELETE *
FROM tbl aS t1
WHERE t1.削除する基準列=(select max(t2.削除する基準列) from tbl as t2 where t1.重複列=t2.重複列)
and 1<(select count(*) from tbl as t3 where t1.重複列=t3.重複列);

この場合は削除する基準となる列の最大値のものを削除しています。
重複するレコードが複数あれば
t1.削除する基準列<>(select max(t2.削除する基準列)
なども可能と思います。

重複列が複数あるばあいは上記のクエリにt1.重複列2=t2.重複列2
と追加できます。

実行結果お知らせください。


[192] Re: 同テーブルでの重複行の削除 投稿者:謎の宇宙人 投稿日:2000/02/29(Tue) 18:19

ども、謎の宇宙人と申します。

> 指定した複数のフィールドがすべて重複した行を削除したいのですが
> どのようなSQLで実現できるでしょうか?

もう少し具体的に言ってもらえると有りがたいんですが、
重複した行を削除するって、全部消しちゃっていいのかな?
重複した行を1行残すとか言わないでね。。。

DELETE文のWHERE句にサブクエリーで、

WHERE FIELD1[, FIELD2...]) IN
(SELECT KEY_FIELD1[, FIELD2...] FROM TABLE_NAME
HAVING COUNT(*) > 1
GROUP BY FIELD1[, FIELD2..])

なんてしてみてはどうかな?
FIELD1,FIELD2..に指定するフィールドをならべて、、、

かなり自信なし、、、(゚O゚)☆\(^^;)自信ないなら書くなよ!!!

ヒントになれば良いんだけど、はずしてたらゴメンね♪
ではでは。。。


[193] Re^2: 同テーブルでの重複行の削除 投稿者:taro 投稿日:2000/03/01(Wed) 17:58

> もう少し具体的に言ってもらえると有りがたいんですが、
> 重複した行を削除するって、全部消しちゃっていいのかな?
> 重複した行を1行残すとか言わないでね。。。
>
> DELETE文のWHERE句にサブクエリーで、
>
> WHERE FIELD1[, FIELD2...]) IN
> (SELECT KEY_FIELD1[, FIELD2...] FROM TABLE_NAME
> HAVING COUNT(*) > 1
> GROUP BY FIELD1[, FIELD2..])
>

ども〜(^^;
重複したうち片方だけのこしたいです。 そのキーは別の
フィールドAの値の大きい方とした場合、一気にやるには
どうしたらいいのでしょうか。

SELECT DISTINCTだと別フィールドをキー
にしてどっちを残すかとか指定できるのかな?

一時テーブルとか作ってそっちに入れたりしないと
だめなのかな〜でもやった事無いし・・・


[197] Re^3: 同テーブルでの重複行の削除 投稿者:謎の宇宙人 投稿日:2000/03/06(Mon) 15:34

ども、謎の宇宙人です。

> 重複したうち片方だけのこしたいです。 そのキーは別の
> フィールドAの値の大きい方とした場合、一気にやるには
> どうしたらいいのでしょうか。

ちょっと考えてみたのですが、
DELETE TABLE_NAME
WHERE (FIELD1, FIELD2, FIELD_A) NOT IN
(SELECT FIELD1, FIELD2, MAX(FIELD_A) FROM TABLE_NAME
GROUP BY FIELD1, FIELD2)

これでどうかな?


[194] Re^3: 同テーブルでの重複行の削除 投稿者:謎の宇宙人 投稿日:2000/03/02(Thu) 14:41

ども、謎の宇宙人です。

> ども〜(^^;
> 重複したうち片方だけのこしたいです。 そのキーは別の
> フィールドAの値の大きい方とした場合、一気にやるには
> どうしたらいいのでしょうか。
>

この前の条件にさらにMAX()で条件を付け加えればいいんじゃない。
なんて、そんな複雑なSQLを組んでも「百害あって一理無し」
仮にできたところで、遅いし、役に立ちませんよ。

> 一時テーブルとか作ってそっちに入れたりしないと
> だめなのかな〜でもやった事無いし・・・

素直にそうした方がいいと思います。
がんばってね♪            
ではでは。。。


[183] フィールド結合時のExistsについて 投稿者:もこもこ 投稿日:2000/02/24(Thu) 15:26

初めてメッセージをします。
WHERE句にExistsをつかってデータを抽出しようとしてます。
サブクエリーでSELECTしてるデータがフィールドを結合したものにすると
うまくとりだせません。
SELECT A,B,C FROM Table_1
WHERE Exists(select A||B FROM Table_2 WHERE〜

Exists以外でINを使っていましたが、これだとデータ量が多くなるとうまくとれなくなってしまいました。
SELECT A,B,C FROM Table_1
WHERE A||B IN (select A||B FROM Table_2 WHERE〜

なにかいい方法がありましたら教えてください。
よろしくお願いします。


[184] Re: フィールド結合時のExistsについて 投稿者:謎の宇宙人 投稿日:2000/02/25(Fri) 12:22

どもども、謎の宇宙人と申します。

> 初めてメッセージをします。
私も初心者です。よろしくね。

> WHERE句にExistsをつかってデータを抽出しようとしてます。
> サブクエリーでSELECTしてるデータがフィールドを結合したものにすると
> うまくとりだせません。
> SELECT A,B,C FROM Table_1
> WHERE Exists(select A||B FROM Table_2 WHERE〜
>
> Exists以外でINを使っていましたが、これだとデータ量が多くなるとうまくとれなくなってしまいました。
> SELECT A,B,C FROM Table_1
> WHERE A||B IN (select A||B FROM Table_2 WHERE〜
>
> なにかいい方法がありましたら教えてください。
> よろしくお願いします。
>
フィールドを結合している理由が良くわかりませんが、
複数のフィールドをサブクエリーで比較する場合、
WHERE (A, B) IN (SELECT A, B FROM〜)とします。
これではだめですか?

はずしていたらゴメンね。

ではでは。。。


[185] Re^2: フィールド結合時のExistsについて 投稿者:もこもこ 投稿日:2000/02/25(Fri) 14:55

ご教授ありがとうございます。

> フィールドを結合している理由が良くわかりませんが、
> 複数のフィールドをサブクエリーで比較する場合、
> WHERE (A, B) IN (SELECT A, B FROM〜)とします。
> これではだめですか?
>
試してみたいと思います。
ありがとうございました。


[180] dbmが使用できない 投稿者:ユカ 投稿日:2000/02/23(Wed) 00:51

掲示板を作りたいのですがdbmが使用できないプロバイダの時の法則てあるの誰か教えてください
宜しくお願いいたします


[177] PL/SQLを勉強したいんですけど・・・。 投稿者:みか 投稿日:2000/02/18(Fri) 20:06

PL/SQLを勉強したいんですけど
なにかいい本があったら教えてください。

おねがいします。


[178] Re: PL/SQLを勉強したいんですけど・・・。 投稿者:圭ちゃん 投稿日:2000/02/21(Mon) 18:03

ども圭ちゃんどす。m(_@_)m

> PL/SQLを勉強したいんですけど
> なにかいい本があったら教えてください。

くるくるのことは分かりませんが、以下のリンクへアクセスされては

いかがでしょうか?

くるくるの事が沢山書いてあるので勉強にはなるとおもいます。

ここは情報が満載です。

でわがむばって勉強して下さいね♪(^<>^)/~~

http://www7.big.or.jp/~pinball/discus/oracle/index.html


[179] Re^2: PL/SQLを勉強したいんですけど・・・。 投稿者:みか 投稿日:2000/02/22(Tue) 09:01

いつもどうもありがとうございます。m(__)m
圭ちゃん♪
世の中には親切な方がいるのだなぁと
思う今日この頃。
いっぱい勉強したいと思うので、
これからもよろしくおねがいします。


[174] 日付型の検索について 投稿者:TOM 投稿日:2000/02/18(Fri) 10:59

はじめまして
データ型として日付として設定されているフィールドに対して、特定の月
或いは日などで検索するのにはどうしたらよいでしょうか?


[175] Re: 日付型の検索について 投稿者:圭ちゃん 投稿日:2000/02/18(Fri) 11:26

ども圭ちゃんどす。m(_@_)m

以下の様な感じでどうでしょうか?

(sql鯖の場合)

月で検索したい場合

引数@hiduke

slect 日付,項目1,項目2
from table1
where datepart(mm,日付) = @hiduke

でわ。(^<>^)/~~


[171] 方法はありますか? 投稿者:みか 投稿日:2000/02/17(Thu) 14:16

教えてください。
おねがいします。

取出したいデータは、
A.取引先コード,B.業種分類コード,C.業種分類名称

利用するテーブルは、5つ
A,B,C,D,E,F


条件は
@
A.取引先コードが
D.得意先コードか
E.納入先コードか
F.請求先コードに存在する場合のデータで

A
C.業種分類名称は
B.業種分類コードが
C.業種分類コードに存在する場合のデータを抽出する。

という感じなのですけれども、
GROUP BYを使用しないで行なうにはどうしたら良いでしょうか?
方法があれば、おしえてください、

文章が下手ですみません。


[173] Re: 方法はありますか? 投稿者:圭ちゃん 投稿日:2000/02/17(Thu) 16:29

ども圭ちゃんどす。m(_@_)m

以下のような感じでどうでしょうか?

あと結合部の[=]は好ましくないのでjoinに作り直して下さい。
(推奨の結合方法ではないので...)

select A.取引先コード,B.業種分類コード,C.業種分類名称
from A,B,C
where A.取引先コード in
(select A.取引先コード
from A,D,E,F
where A.取引先コード = D.得意先コード
or A.取引先コード = E.納入先コード
or A.取引先コード = F.請求先コード)
and A.取引先コード = B.取引先コード
and B.業種分類コード = C.業種分類コード

でわ。(^<>^)/~~


[176] Re^2: 方法はありますか? 投稿者:みか 投稿日:2000/02/18(Fri) 20:04

ご丁寧にどうもありがとうございました。
ORACLEなのでJOINが使えなかったけれども
無理矢理やってしまいした。
ほんとうにどうもありがとうございました。


[170] DELETEについて 投稿者:山ちゃん 投稿日:2000/02/17(Thu) 12:11

DELETE文について質問します。(Oracleを使用しています)

テーブルA 項目X
テーブルB 項目X、項目Y

テーブルAを削除したいのですが、X項目で連結したテーブルBのY項目の値を条件で絞って、該当するテーブルAのレコードを削除するSQL文が分かりません。

ちなみに、delete A where A.X = B.X and B.Y <= '00/01/31'
というような馬鹿げたSQL文ではエラーになるだけでした。
どなたか、ご存知の方教えて下さい。よろしくお願い致します。


[181] Re: DELETEについて 投稿者:謎の宇宙人 投稿日:2000/02/23(Wed) 19:33

こんちわ!おはつです。謎の宇宙人と申します。
早速ですが、お答えします。
副問い合わせを使えばできますよ。

DELETE A WHERE X IN (SELECT X FROM B WHERE Y <= '00/01/31')

ちなみに、SELECT文の返す件数が1件ならば、
'IN'ではなく'='でもいけます。
ではでは。。。

> DELETE文について質問します。(Oracleを使用しています)
>
> テーブルA 項目X
> テーブルB 項目X、項目Y
>
> テーブルAを削除したいのですが、X項目で連結したテーブルBのY項目の値を条件で絞って、該当するテーブルAのレコードを削除するSQL文が分かりません。
>
> ちなみに、delete A where A.X = B.X and B.Y <= '00/01/31'
> というような馬鹿げたSQL文ではエラーになるだけでした。
> どなたか、ご存知の方教えて下さい。よろしくお願い致します。


[163] fetchの意味 投稿者:ワン 投稿日:2000/02/15(Tue) 14:37

fetchの意味がいまいちつかめません。
どのような物なのか教えていただけませんか?
特に利点などを知りたいです。


[168] Re: fetchの意味 投稿者:圭ちゃん 投稿日:2000/02/16(Wed) 15:07

ども圭ちゃんどす。m(_@_)m

フェッチ = 取り出し

です。

利点はSQL文では出来ないような処理の場合に使用します。

1レコード単位で処理していきます。

でわ。(^<>^)/~~


[182] Re^2: お礼!! 投稿者:ワン 投稿日:2000/02/23(Wed) 19:52

お礼が遅くなりました。。。m(__)m
圭ちゃんさんどうもありがとうございます。
なんとか、がんばって使えるようにがんばります。


[162] データのロックについて 投稿者:あきこ 投稿日:2000/02/15(Tue) 13:20

こんにちわ。
SQLServerで、データのロックをしたのですが、
ロックがされていない状態です。
試している方法は、SELECT * FROM a WITH (PAGLOCK) というSQL文で試しています。
ロックのやり方を教えて下さい。


[164] Re: データのロックについて 投稿者:とも 投稿日:2000/02/16(Wed) 10:46

> 試している方法は、SELECT * FROM a WITH (PAGLOCK) というSQL文で試しています。

SELECT * FROM a WITH (UPDLOCK)
で試してみてはいかがでしょうか?
カーソルタイプをrdOpenStaticにするとロックされます。


[161] データテーブルの表示方法について 投稿者:Taty 投稿日:2000/02/14(Mon) 17:26

はじめまして、Tatyといいます。
質問なのですが、かなりの数のデータが登録してあるテーブルが
あるとします。(TABLE1)
テーブルの項目には、名前、番号、日付があります。
このデータを一覧表示させるのに
"SELECT * FROM TABLE1"とすると、テーブルに有るデータ全部が
出力されます。出力されたものには、番号・名前が重複するものも
ありますが、重複する場合は、日付が最新のものだけを出力させ
たいのです。
サブクエリーを使ってSQL文を書くといいとの話は、聞いたのですが、
ここから先に話が進みません。
どなたか、御教授ください、よろしくお願いします。


[167] Re: データテーブルの表示方法について 投稿者:圭ちゃん 投稿日:2000/02/16(Wed) 14:51

ども圭ちゃんどす。m(_@_)m

サブクエリーを使わなくても以下の様な感じでいいんでわ?

SELECT Max(table1.日付) AS 最新日付, table1.名前, table1.番号
FROM table1
GROUP BY table1.名前, table1.番号

どうでしょう?

でわ。(^<>^)/~~


[172] Re^2: データテーブルの表示方法について 投稿者:Taty 投稿日:2000/02/17(Thu) 15:10

ありがとうございます、圭ちゃんさん。

> SELECT Max(table1.日付) AS 最新日付, table1.名前, table1.番号
> FROM table1
> GROUP BY table1.名前, table1.番号

ちこっと変えてうまくいきました。
どうもありがとうございました。


[159] ストアドプロシージャで質問です〜 投稿者: 投稿日:2000/02/14(Mon) 14:23

PLSQLできないのにやらされてこまってます(TT

他のものみて少しは分かるけどやっぱり流すとエラーです(TT
しかも急ぎなので・・きけるひともなし。(なんちゅー会社だ)

どこがエラー点か分かれば教えて下さい

処理内容は管理番号をテーブルにアップデートしてるだけです。
CURRVALで値を入れアップデート成功時はNEXTVALで次の値を
とり、失敗時は次の値は取らないと言う処理(みたいです)
どなたかこころやさしいかたかいとうを〜!

/****** 宣言部 ******/
CREATE OR REPLACE PROCEDUREABCD0010(J_SYS IN CHAR)
IS

L_CMIT_NO NUMERIC(4); -- カウント200でCMMIT
   L_KEY_NO NUMERIC(9);
/****** 実行部 ******/
BEGIN

--処理ループ開始
LOOP

L_CMIT_NO := L_CMIT_NO + 1;
IF L_CMIT_NO > 200 THEN --200 づつコミット
COMMIT;
L_CMIT_NO := 0;
END IF;

L_KEY_NO := 割付管理NO.NEXTVAL
------------------ BIGINNING OF SUB_BLOCK ---------------------------------
BEGIN
UPDATE店割付
SET割付管理番号= L_KEYNO;
UPDATE品番管理
SET割付管理番号= L_KEYNO;
UPDATE請求金額
SET割付管理番号= L_KEYNO;
UPDATE在庫報告
SET割付管理番号= L_KEYNO;
END;
------------------ END OF SUB_BLOCK ---------------------------------
特約店割付管理NO.NEXTVAL

END LOOP;



COMMIT;

/****** 例外処理部 ******/

EXCEPTION

WHEN NO_DATA_FOUND THEN
ROLLBACK;

WHEN VALUE_ERROR THEN
ROLLBACK;

WHEN OTHERS THEN
ROLLBACK;

END ABCD0010;
/


[158] ストアードプロシージャについて 投稿者:ゴーシュー 投稿日:2000/02/11(Fri) 14:31

ストアードプロシージャについて
ストアードプロシージャに渡されるパラメータをもとに
IF文のようなものを使って、パラメータの内容によって
処理内容を分けたいと考えています。

こんな感じのプロシージャで
CREATE PROCEDURE proc_発注集計
@IN_BUMON_CD numeric(2,0),
@IN_SEIHIN_CD numeric(5,0) AS
SELECT Bumon_cd,Seihin_cd,SUM(Hatu_y+Hatu_y2+Hatu_y3+Hatu_y4) Hatu_y ,COUNT(*) Hatu_q
FROM TB019
WHERE Jyokyo_kb<>9AND
Bumon_cd = @IN_BUMON_CDAND
Seihin_cd=@IN_SEIHIN_CD
GROUPBYBumon_cd ,
Seihin_cd
GO

例えば@BUMON_CDの内容によってSELECT文の内容や
集計される内容を分けたいのですが
可能でしょうか?

ご存じの方、おられましたらご教授ください。


[166] Re: ストアードプロシージャについて 投稿者:圭ちゃん 投稿日:2000/02/16(Wed) 14:44

ども圭ちゃんどす。m(_@_)m

if文テイストというのはcase文のことでしょうか?

詳しくはヘルプを...

でわ。(^<>^)/~~


[157] データベースのリンク方法 投稿者:ひろし 投稿日:2000/02/10(Thu) 16:50

はじめまして。
はじめて投稿いたします。
分かる方がいらっしっしゃいましたら教えてください。
SQL文で、あるデータベースとあるデータベースの項目名を
リンク付ける方法がありましたら、教えてください。
(データベースとデータベースのリンク付けでも構いません。
 たしか、ORACLEでは上記のような事ができたと思うのですが・・・)
ちなみに、サーバーはSQLサーバーです。


[165] Re: データベースのリンク方法 投稿者:圭ちゃん 投稿日:2000/02/16(Wed) 14:41

ども圭ちゃんどす。m(_@_)m

それってjoinのことでしょうか?

違ってたらゴメンナサイ。

でわ。(^<>^)/~~


[155] 一時テーブル 投稿者:ごと 投稿日:2000/02/08(Tue) 18:36

また質問させていただきます。

ストアドプロシージャで一時テーブルを作り、
同じプロシージャ内でその一時テーブルを参照したいのですが、
うまくいかないのです。

以下のような参照の仕方ならうまくいくのですが・・・

SELECT * INTO #tmp FROM tableA
SELECT * FROM #tmp 〜

以下のような参照はうまくいかないのです。

SELECT * INTO #tmp FROM tableA
SELECT #tmp.ID, #tmp.name, 〜

そもそもSELECTの部分での参照はできないのでしょうか?

よろしくおねがいします。
MS SQLServerです。


[156] Re: 一時テーブル 投稿者:圭ちゃん 投稿日:2000/02/09(Wed) 09:12

ども圭ちゃんです。m(_@_)m

そのやり方で出来るはずですけど...

現にうちでもそうやっています。

でわ


[160] Re^2: 一時テーブル 投稿者:ごと 投稿日:2000/02/14(Mon) 14:45

あ、すいません、私の勘違いでした(^^;)
ちゃんとできました。

ありがとうございました。


[150] SQLで可能ですか? 投稿者:ぽん太 投稿日:2000/02/04(Fri) 18:41

こんばんは。ぽん太です。
下記のような抽出条件をSQLで実現可能なのでしょうか。

あるテーブル「table」から、カラムcode_no,A,B,Cを抽出します。
このとき、Cは最小値(min)、Bは合計値(SUM)を取得したいのですが、
さらにいうと、AはカラムCの抽出したデータと同じ行のカラムAの値を
表示させたいのです。

SQLだと、
select code_no,
min(A),
sum(B),
min(C)
from table
group by code_no;

とかくと、カラムAも自身の最小値をもってきてしまいますよね。
ではなくて、カラムCの最小値と同じ行にあるカラムAの値が
必要なのです。
SQL文1回で可能でしょうか???

教えてください。お願いします。
ちなみにDBはInfomixですが。。


[273] Re: SQLで可能ですか? 投稿者:tohzai 投稿日:00/08/11(Fri) 17:15

> こんばんは。ぽん太です。
> 下記のような抽出条件をSQLで実現可能なのでしょうか。
>
> あるテーブル「table」から、カラムcode_no,A,B,Cを抽出します。
> このとき、Cは最小値(min)、Bは合計値(SUM)を取得したいのですが、
> さらにいうと、AはカラムCの抽出したデータと同じ行のカラムAの値を
> 表示させたいのです。
>
> SQLだと、
> select code_no,
> min(A),
> sum(B),
> min(C)
> from table
> group by code_no;
>
> とかくと、カラムAも自身の最小値をもってきてしまいますよね。
> ではなくて、カラムCの最小値と同じ行にあるカラムAの値が
> 必要なのです。
> SQL文1回で可能でしょうか???
>
> 教えてください。お願いします。
> ちなみにDBはInfomixですが。。
>

いま気づいたのですが、下記のクエリでしょうか?

select t1.col1, (select sum(col2) from tbl), min(t1.col3)
from tbl as t1 where t1.col3=(select min(t2.col3) from tbl as t2)
group by t1.col1


[272] Re: SQLで可能ですか? 投稿者:tohzai 投稿日:00/08/11(Fri) 17:04

> こんばんは。ぽん太です。
> 下記のような抽出条件をSQLで実現可能なのでしょうか。
>
> あるテーブル「table」から、カラムcode_no,A,B,Cを抽出します。
> このとき、Cは最小値(min)、Bは合計値(SUM)を取得したいのですが、
> さらにいうと、AはカラムCの抽出したデータと同じ行のカラムAの値を
> 表示させたいのです。
>
> SQLだと、
> select code_no,
> min(A),
> sum(B),
> min(C)
> from table
> group by code_no;
>
> とかくと、カラムAも自身の最小値をもってきてしまいますよね。
> ではなくて、カラムCの最小値と同じ行にあるカラムAの値が
> 必要なのです。
> SQL文1回で可能でしょうか???
>
> 教えてください。お願いします。
> ちなみにDBはInfomixですが。。
>
はじめまして
下記のクエリみたいな感じでよろしいんでしょうか?

select t1.col1, sum(t1.col2), min(t1.col3)
from tbl as t1 where t1.col3=(select min(t2.col3) from tbl as t2)
group by t1.col1

試してみてください。 違っていたら詳しく教えてください。


[169] Re: SQLで可能ですか? 投稿者:圭ちゃん 投稿日:2000/02/16(Wed) 15:38

ども圭ちゃんどす。m(_@_)m

日が経っているので解決済みかもしれませんが、とりあえず...

私はInfomixは知らないのでSQL鯖での話しになりますが...

考え方は大体同じだと思います。

とりあえず1回のSQL文ではむりではないでしょうか?

多分以下の様に段階を踏むことになると思います。

SELECT table.code_no, table.a, Min(table.c) AS cの最小
FROM table
GROUP BY table.code_no, table.a

SELECT table.code_no, Sum(table.b) AS bの合計, Min(table.c) AS cの最小
FROM table
GROUP BY table.code_no

SELECT ac.code_no, ac.a, bc.bの合計, bc.cの最小
FROM ac INNER JOIN bc ON ac.code_no = bc.code_no

どうでしょうか?

でわ。(^<>^)/~~


[148] where like文の変数について 投稿者:ken 投稿日:2000/02/01(Tue) 20:18

where like文で自分で設定した変数を入れたいのですが
できません。
どなたか教えてもらえませんか?
よろしくお願いします。

一応、SQLを書いときます。

〜〜の部分は変数です。
ちなみに変数にはstring型で"99-08"が入っています。

select * from support where update like 〜〜


[149] Re: where like文の変数について 投稿者:圭ちゃん 投稿日:2000/02/02(Wed) 16:38

ども圭ちゃんどす。m(_@_)m

多分VB等からSQL文をなげているのだと思いますが

下記の様な感じでどうでしょうか?

(vbでやりました)

Set RR = RC.OpenResultset("select * from support where update like '" & hensu & "'", rdOpenDynamic, rdConcurRowver)


[147] ツリー表示による記事一覧の作成方法 投稿者:永松るる 投稿日:2000/02/01(Tue) 15:59

はじめまして、永松@小林製作所と申します。

現在、データベースを使用した掲示板システムを作ろうとしています。
考えているのは、「ツリー状」に記事一覧を表示するようなものです。
それで、SQLやデータベースの設計の本を読んでみたのですが、
私の理解力不足のためよくわかりません。
悩んでいる点は以下の点です。

(1)記事を管理するテーブルのレイアウトはどうしたらいいのか。
テーブルのレイアウトに関しては次のように考えているのですが、
効率の良いレイアウトなのか判断できないでいます。
◆記事管理テーブル
◇記事ID(記事を識別するためのプライマリーキー)
◇タイトル
◇投稿者
◇投稿日時
◇投稿者メールアドレス
◇内容
◇参照先URL
◇親となる記事のID

(2)ツリー状に記事一覧を表示するときに、どのようなSQLを実行したらよいのか。

(3)現在データベース設計に関して、とても興味を持っています。
というか、無理矢理仕事でやらされています(笑)。
データベース設計に関する良い書籍などご存じでしたら、
教えていただけませんか。

なんらかの情報が頂ければ、幸いです。
よろしくお願いします。

P.S. 私にこんなシステムが作れるのだろうか・・・とても心配。


[142] SQL Server での「表結合」と「DISTINCT」 投稿者:ごと 投稿日:2000/01/31(Mon) 08:27

SQL Server での「表結合」と「DISTINCT」について教えてください。

まず、以下のような2つのテーブルがあります。

 カルテID カルテ番号 日付
------------------------------
  1    98-1111  0101
------------------------------
  2    98-2222  0102
------------------------------
  3    98-3333  0103
------------------------------

 画像ID  画像  カルテID
-----------------------------
  1   xray00   1
-----------------------------
  2   CT00    1
-----------------------------
  3   xray11   2
-----------------------------
  4   xray22   2
-----------------------------
  5   echo00   2
-----------------------------
6   CT11    3
-----------------------------
  7   xray33   3
-----------------------------

この2つのテーブルを結合させて以下のように
表示させているのですが・・・

 画像ID 画像  カルテ番号 日付
-------------------------------------
  1  xray00  98-1111  0101
-------------------------------------
  2  CT00   98-1111  0101
-------------------------------------
  3  xray11  98-2222  0102
-------------------------------------
  4  xray22  98-2222  0102
-------------------------------------
  5  echo00  98-2222  0102
-------------------------------------
  6  CT11   98-3333  0103
-------------------------------------
  7  xray33  98-3333  0103
-------------------------------------

この表で「カルテ番号が重複している行を表示させない」
ようにしたいのです。(以下の表のように)

 画像ID 画像  カルテ番号 日付
-------------------------------------
  1  xray00  98-1111  0101
-------------------------------------
  3  xray11  98-2222  0102
-------------------------------------
  6  CT11   98-3333  0103
-------------------------------------

「DISTINCT」を使っていろいろ試してみたのですが、
うまくいきません。どのようにしたらいいのでしょうか。

よろしくお願いします。


[144] Re: SQL Server での「表結合」と「DISTINCT」 投稿者:圭ちゃん 投稿日:2000/01/31(Mon) 18:44

ども、圭ちゃんどす。m(_@_)m

以下の様な感じでどうでしょうか?

SELECT First(T_画像.画像ID),First(T_カルテ.日付),First(T_画像.画像),T_カルテ.カルテ番号

FROM T_カルテ INNER JOIN T_画像 ON T_カルテ.カルテID = T_画像.カルテID

GROUP BY T_カルテ.カルテ番号

これを実行すると以下になります。

1 2000/01/01 xray00 98-1111
3 2000/01/02 xray11 98-2222
6 2000/01/03 CT11 98-3333

でわ


[145] Re:ごめんちゃい 投稿者:圭ちゃん 投稿日:2000/01/31(Mon) 19:57

ごめんちゃい。

SQL鯖にはFirst関数はなかったですね。(汗

SELECT Min(T_画像.画像ID),Min(T_カルテ.日付),Min(T_画像.画像),T_カルテ.カルテ番号
FROM T_カルテ INNER JOIN T_画像 ON T_カルテ.カルテID = T_画像.カルテID
GROUP BY T_カルテ.カルテ番号

これでだめなら(min)できないかも?

一発でやろうとしたらこれぐらいでしょう...

何度かに分ければ他にもあると思いますが...

たとえば、一番最初のカルテ番号のレコードを別テーブルに吐き出して

それをみるとか...


[154] Re^3: できました! 投稿者:ごと 投稿日:2000/02/08(Tue) 14:13

ただ単に私の勘違いでした(^^;)
「T_カルテ.カルテ番号」の部分にも「Min()」をつけていたので
出来ないだけでした。

ありがとうございました。


[151] Re^2: ごめんちゃい 投稿者:ごと 投稿日:2000/02/07(Mon) 13:41

アドバイスありがとうございます。

Min関数を使った方法ではうまくいきませんでした。
テンポラリテーブル(って言うのかな?)を使った方法を
考えてみることにします。

またわからないことがあったらよろしくお願いします。
返事が遅れてすいませんでした。


[139] 動的リンクと静的リンクについて 投稿者:初心者−島崎 投稿日:2000/01/27(Thu) 12:32

始めまして
動的リンクと静的リンクの使い分けがよく理解できません。
どのような処理の時に、どう使い分けし、それは何の為なのかを教えて下
さい。初歩的な質問で恐縮ですが、お願いします。


[143] Re: 動的リンクと静的リンクについて 投稿者:圭ちゃん 投稿日:2000/01/31(Mon) 18:01

ども、圭ちゃんどす。m(_@_)m

「動的リンク」とは、プログラムが実行される時に、ライブラリをリンクして
アプリケーションに組み込む方式。

DLLは必要なときにメモリーに読み込まれ、不要になると廃棄され、メモリ
ーを解放する。

このライブラリに含まれるコードはアプリケーションに含まなくてもよいの
で、いろいろなアプリケーションで利用でき、

ハード・ディスクなどの資源の節約や部品の変更がしやすくなる。

これに対して、コンパイル後にリンクしておき、実行前にすでにリンクされ
ているものを「静的リンク」と呼ぶ。

つまり色々なアプリで共通な所はDLLに

そのアプリだけぐらいみたいなものはモジュールでといったところでしょう
か?

ちがう?

でわ


[133] 教えて下さい。集合抽出クエリーのやり方 投稿者:Taka 投稿日:2000/01/19(Wed) 15:17

取引先マスターに格納されているデータを、申込書の順番に出したいの
ですが、どのようなSQLを書けばよいか悩んでいます。

取得したいのは、取引先マスターのほぼ全データなのですが、抽出条件
とソート条件が申込書テーブルのものを利用します。

申込書テーブルの性質上、同一店舗のデータが複数格納されます。
これを、取引先毎にグループ化し、申込み番号が古いもの順で、ソート
したいのです。

例えば、
申込み番号  取引先
   1    A
   2    C
   3    D
   4    A
   5    B
とあった場合は、A、C、D、Bと並べ、その順に取引先マスターの
データを取得したいのです。

いきなり不躾な質問で恐縮ですが、どなたかよろしくお願いいたします。



[134] Re: 教えて下さい。集合抽出クエリーのやり方 投稿者:圭ちゃん 投稿日:2000/01/20(Thu) 08:38

ども圭ちゃんどす。m(_@_)m

select *
from 申込書
where <略>
order by 取引先,申込み番号

こんな感じ?

order by はデフォルトで昇順で並びます。


[136] Re^2: 教えて下さい。集合抽出クエリーのやり方 投稿者:Taka 投稿日:2000/01/20(Thu) 10:13

圭ちゃんさん、ご返答ありがとうございます。

私の説明が悪かったようで、意図が伝わらなかったようで。

え〜、並び替えた際に、重複する取引先は1つにまとめてしまいたいんです。
ですから、同じ取引先から2つ以上申込者が来ていても、出すのはより古い
申込書だけを抽出したいのです。

申し訳ありませんが、今ひとつお知恵をお貸し下さい


[137] Re^3: 教えて下さい。集合抽出クエリーのやり方 投稿者:圭ちゃん 投稿日:2000/01/20(Thu) 18:04

圭ちゃんどす。

select 取引先,min(申込み番号)
from 申込書テーブル
group by 取引先

このビューを
select <略>
from 申込書テーブル,ビュー
where 申込書テーブル.申込み番号 = ビュー.申込み番号

で、ないんかな?

ちがうかな?

でわ(^^)/~~


[138] Re^4: 教えて下さい。集合抽出クエリーのやり方 投稿者:Taka 投稿日:2000/01/21(Fri) 21:52

圭ちゃんさん、色々ありがとうございました。
View出力でDBに書くことがちょっと許されそうに無かったので、プログラムで
逃げちゃいました(^^;;)

圧縮ソートしたレコードセットを頭から読んで、ループで繰り返す。
でまたselectする。
納期迫ってきているので、しょうがないです。
とりあえず作ってから、時間を見つけて直していきます。

ありがとうございました。

(1回のSQLで処理できるものだと思いこんできたのが、そもそもの間違い
 でした。もっとSQLを勉強しないと)


[132] Renameについて 投稿者:Yくん 投稿日:2000/01/17(Mon) 16:01

はじめまして
今 アクセスからオラクルへデータをエクスポートしたときにtable名を間違ってしまったのですが、その間違ったtable名を探しだす方法と、見つけた後のTable名の変更方法を教えてください。
よろしくお願いします。


[129] 検索できないよ 投稿者:ぽん太 投稿日:2000/01/14(Fri) 20:41

ぽん太です。
SQLの条件に、datetime型のカラムがあるときどうやって記述する
のですか?

例えば、2000/01/14の17:00のものを条件に指定したい時、

where table.date_column = datetime('2000/01/14 17:00:00')
のように書いてもダメでした。
date型だとうまく行くのに、datetimeにすると文法エラーとかに
なってしまいます。
助けてください。



[130] Re: 検索できないよ 投稿者:圭ちゃん 投稿日:2000/01/15(Sat) 16:26

圭ちゃんどす。m(_@_)m

別に型を指定せずにそのまま明記してますが...

where 売上日 = '2000/01/14 17:00 pm'


[131] Re^2: 検索できないよ 投稿者:ぽん太 投稿日:2000/01/17(Mon) 12:02

> 圭ちゃんどす。m(_@_)m
>
> 別に型を指定せずにそのまま明記してますが...
>
> where 売上日 = '2000/01/14 17:00 pm'

そうやってもエラーとなります。
ちなみに、
where Date(売上日) = date('2000/01/14')
だとうまくいくのですが、時間まで指定しようとするとSYNTAXエラーに
なるのです。
???????


[135] Re^3: 検索できないよ 投稿者:圭ちゃん 投稿日:2000/01/20(Thu) 08:39

圭ちゃんどす。m(_@_)m

ふにゃ?

これの実行はどのあぷり?


[127] どなたか教えて下さい。まいってます。(T_T) 投稿者:中堅ハチ公 投稿日:2000/01/11(Tue) 15:50

現在、SYBASEのSQL ANYWAREを使って
データベースを製作してます。
サーバ〜クライアント間のネットワークは、WANを
使ってます。
サーバとクライアントが同一ドメイン内にある環境では、
クライアント側からサーバを探し出して接続するのですが、
他ドメインのクライアントからサーバに接続しようと
すると、「サーバが見つかりません」とエラーになります。
サーバ側、クライアント側の各ODBCの設定は何度見ても
間違いはなさそうなのですが、原因がさっぱり分かりません。
どなたか、考えられる原因を教えて頂ければ幸いです。
教えてくんですみません。


[128] Re:( ^^) 投稿者:自己レス 投稿日:2000/01/12(Wed) 14:53

本日試行錯誤の結果、原因がわかりました。
よかったよかった。


[126] スケジュールを設定保存したDTCパッケージを使って、データのインポートができません。 投稿者:初心者の横山 投稿日:1999/12/20(Mon) 09:56

データサービス変換サービス インポートウィザードを使って、別のLANのサーバ機にあるSQLserver6.5のテーブルをSQLserver7.0へコピーするようにし、スケジュールを設定してDTSパッケージに保存しました。
 このパッケージをEnterprise Manager のデータ変換サービス、ローカルパッケージで実行すると正常に動作するのですが、設定した時刻に自動実行させようとすると、下のようなエラーとなります。

 当方、まったくの初心者につき、何が何やらわかりません。どうか解決方法をお教えください。

DTSRun: 実行中... DTSRun OnStart: テーブル削除 [Daily01].[dbo].[T当座預金情報] ステ
ップ DTSRun OnFinish: テーブル削除 [Daily01].[dbo].[T当座預金情報] ステップ DTSRun
OnStart: テーブル作成 [Daily01].[dbo].[T当座預金情報] ステップ DTSRun OnFinish: テーブル
作成 [Daily01].[dbo].[T当座預金情報] ステップ DTSRun OnStart: データを T当座預金情報 か
ら [Daily01].[dbo].[T当座預金情報] にコピー ステップ DTSRun OnError: データを T当座預金
情報 から [Daily01].[dbo].[T当座預金情報] にコピー ステップ、エラー = -2147008507
(80074005) エラー文字列 : 特定できないエラーです エラー ソース : Microsoft データ
変換サービス (DTS) パッケージ ヘルプ ファイル : sqldts.hlp ヘルプ コンテキスト :
1100 エラー詳細レコード : エラー : -2147008507 (80074005); プロバイダ エラー :
0 (0) エラー文字列 : 特定できないエラーです エラー ソース : Microsoft データ変換
サービス (DTS) パッケージ ヘルプ ファイル : sqldts.hlp ヘルプ コンテキスト :
1100 エラー : -2147467259 (80004005); プロバイダ エラー : 1326 (52E) エラー文
字列 : [Microsoft][ODBC SQL Server Driver][Named Pipes]ConnectionOpen (CreateFile
()). エラー ソース : Microsoft OLE DB Provider for ODBC Drivers ヘルプ ファイ
ル : ... プロセス終了コード 1.ステップは失敗しました。


[124] where文で・・・ 投稿者:フクダ 投稿日:1999/12/09(Thu) 21:50

はじめまして。
よろしくお願いします。

早速ですが、where文の中にある、「(+)」の意味が分かりません。
例えば、

SELECT T_MASTER.ID,
T_MASTER.NAME,
SUM(T_DETAIL_A.USE)
FROM T_MASTER,
T_DETAIL_A
WHERE T_MASTER.ID = T_DETAIL_A.ID(+)
GROUP BY T_MASTER.ID;

の様な時、(+)にはどのような意味があるのでしょうか?


[125] Re: where文で・・・ 投稿者:ニャンコ 投稿日:1999/12/12(Sun) 22:08

私も初めまして
これからいろいろ質問することもあると思いますが、
よろしくおねがいします。

> 早速ですが、where文の中にある、「(+)」の意味が分かりません。

Accessチックにいうとと「矢印リンクです」
(+)がついている方のテーブルの項目を全てという意味です。

> SELECT T_MASTER.ID,
> T_MASTER.NAME,
> SUM(T_DETAIL_A.USE)
> FROM T_MASTER,
> T_DETAIL_A
> WHERE T_MASTER.ID = T_DETAIL_A.ID(+)
> GROUP BY T_MASTER.ID;

この場合でしたら、T_DETAIL_AテーブルのIDを全てという条件に
なるので、場合によっては、T_MASTERテーブルの項目が空で
T_DETAIL_AテーブルのUSE全レコードの合計値が出力されることに
なります。


[123] MS-SQLServer6.0 環境設定 投稿者:ましゃ 投稿日:1999/12/08(Wed) 11:27

MS-SQLServer6.0の環境設定を変更して再起動したら、
SQLServerのサービスが開始されなくなりました。
(手動でも開始できません)

どのように、復旧すれば良いのでしょうか?


[122] as 句について 投稿者:PIERO 投稿日:1999/12/01(Wed) 17:23

select の AS句で作成した項目で条件判定"WHERE"では、しようできないのですか?


[121] 間違い? 投稿者:AT H 投稿日:1999/11/27(Sat) 13:50

P.331に載ってる練習問題の解答の中に
間違いと思われる個所があるのでマウスをとりました。
問5の問題文では、「order by part.partnum」となっているが、
解答を見ると、「order by ORDER_DATE」になっている。
すなわち、部品番号順のはずが、受注日順に変わってしまっている。
問題の意図は、簡潔でわかりやすいクエリーにすることだから、
解答は、「order by p.partnum」が正しいと思います。
よろしく、お願いします。

以上


[120] updateについて・・・ 投稿者:もー 投稿日:1999/10/29(Fri) 09:50

テーブルBは、テーブルAの子DBであるとします。
テーブルBの avg が '3'の場合
テーブルAの rank に 'A' と update するSQL文を教えて下さい。

<A:親>
No name rank
---- ---------- -----
1 ○
2 ×
3 △
4 □

<B:子>
No name avg
---- ---------- -----
1 ○ 5
2 × 3
2 × 1
4 □ 3



[119] embeddedSQLについて 投稿者:WU 投稿日:1999/10/28(Thu) 00:54

embeddedSQLの初心者に解りやすい本を探しています。ご存知の方教えて下さい。


[117] 教えて下さい 投稿者:たか 投稿日:1999/10/22(Fri) 18:17

プログラミング初心者の たか といいます。
今、C言語を使ってプログラム作成中ですがデータベースへの接続につまずいています。
何を宣言し、どのような構文を使えばよいか、全く分かりません。
下にプログラムを掲載するので良いアドバイスをお願いします。

プログラムの概要
KATB004というDBからある項目を検索し、あるファイルへ書き込むという
プログラムです。

#define uid katako
#define pwd kata

#include <stdio.h>

static void SpaceCut( char *str);

main( int **char)
{
FILE *fp1;
char buff[100];
int code;
double wei;
double kl;

EXEC SQL DECLARE CUR01 CURSOR FOR
SELECT
K04SHUB, K04KM, K04KT, K04KWA
K04KL, K04BUNO K04KWB, K04WEI
FROM KATB004;
WHERE K04KOGO = seiban;

EXEC SQL CONNECT :uid IDENTIFIED BY :pwd;
code = sqlca.sqlcode;
if(code != 0)
{
printf("< FILE OPEN ERROR > KATB004");
exit(0);
}

sprintf( FileName, "/kyoryo/katako/sql/%s.csv", seiban);
if( NULL == ( fp1 = fopen( "FileName", "w")))
{
printf("< FILE OPEN ERROR > %s.csv\n",seiban);
EndExit( 12);
}

EXEC SQL OPEN CUR01;

while( K04KOGO = seiban)
{
sprintf( buff, "%-2.2s", K04BUNO);
SpaceCut( buff);
fprintf( fp1, "%s,", buff);

sprintf( buff, "%-2.2s", K04SHUB);
SpaceCut( buff);
fprintf( fp1, "%s,", buff);

sprintf( buff, "%-10.10s", K04KM);
SpaceCut( buff);
fprintf( fp1, "%s,", buff);

fprintf( fp1, "%.0f,", K04KWA);
fprintf( fp1, "%.0f,", K04KWB);
fprintf( fp1, "%.0f,", K04KT);

sprintf( wei, "%.0f", K04WEI);
sprintf( kl, "%.0f", K04KL);
fprintf( fp1, "%.0f", wei * / 1000000);
}

EXEC SQL CLOSE CUR01;

EndExit( 0);
}

static void SpaceCut( char *str)
{
short i;

for( i = strlen( str)-1; i > -1; i--)
{
if( 0x20 == str[i])
{
str[i] = 0x00;
}
else
{
return;
}
}
}


[114] SELECT<件数指定>? 投稿者:フローレン 投稿日:1999/10/12(Tue) 15:51

はじめまして。フローレンです。
今、SQLでめっちゃ悩んでます。
SELECT文で何件取ってきたいという件数指定する
方法はありませんか?
条件に合致するデータが100件あったとしてそのうちの
10件だけとりあえず取得したいんです。
もしくは、1件だけ取得する方法でも構いません。
NEXT, NEXTで取っていければ問題ないので。
ちなみにVC++5.0 で開発してる初心者です。
よろしくお願いします。


[115] Re: 自己レスです 投稿者:フローレン 投稿日:1999/10/12(Tue) 18:25

> SELECT文で何件取ってきたいという件数指定する
> 方法はありませんか?
> 条件に合致するデータが100件あったとしてそのうちの
> 10件だけとりあえず取得したいんです。

SELECT文を実行する前に
SET ROWCOUNT 行数 を指定すれば指定した件数だけ
取得することができました。
お騒がせしました。


[113] ユニオンでのソート 投稿者:90210 投稿日:1999/10/10(Sun) 00:51

ユニオンを使って3つ別記して 3つのデータをつなげるとき
おのおのSELECT文にorder byをかけてたところpls423のエラーがでます。 ソートをかける方法を教えて下さい。
ちなみにこのデータはカーソルとしての定義を行ってます。


[112] truncateについて 投稿者:m.o 投稿日:1999/10/06(Wed) 14:04

はじめて投稿させていただきます。
truncateについてなのですが、
ストアドプロシージャ内で実行しようとしたら、
コンパイルの段階でエラーとなってしまいました。
ストアドプロシージャ内ではtruncateは
サポートされないのでしょうか?
もしもこれについての情報をお持ちの方いらっしゃいましたら
どうか教えていただけないでしょうか?
(delete from ○○では×なのです)


[118] Re: truncateについて 投稿者:しま 投稿日:1999/10/26(Tue) 14:46

> はじめて投稿させていただきます。
> truncateについてなのですが、
> ストアドプロシージャ内で実行しようとしたら、
> コンパイルの段階でエラーとなってしまいました。
> ストアドプロシージャ内ではtruncateは
> サポートされないのでしょうか?
> もしもこれについての情報をお持ちの方いらっしゃいましたら
> どうか教えていただけないでしょうか?
> (delete from ○○では×なのです)

ORACLEを使っているのであれば、PL/SQL文内で直接DDLの発行は
できませんので、DBMS_SQLパッケージを使用する必要があります。


[111] Website とデーターベースのリンク 投稿者:Asuka 投稿日:1999/09/30(Thu) 01:54

先日Website とデーターベースをリンクSQLスクリプトの一部を入手したのですがさっぱり分かりません。スクリプトは

<%
set conntemp=server.createobject("adodb.connection")
conntemp.open "tapdata"
flag=request.QueryString("pic")
set rstemp=conntemp.execute("select * from Extra_Info where PicID=" & "'"&flag&"'")
%>

です。
分かる方はぜひe-mailで教えてください。
e-mailアドレス: asuka_ishikawa@yahoo.co.jp


[106] anonymous blockって? 投稿者:ゆう 投稿日:1999/09/08(Wed) 11:55

呼び出しスタックを監視していたら、
実行プロシージャのあとに、'anonymous block'というのが
ありました。
これって、いったい何ナノでしょうか?
お分かり方教えて下さい。 ゆう


[103] 言葉の意味は? 投稿者:あぶく 投稿日:1999/09/01(Wed) 15:05

 SQL文で、「INDEXを張る」というのはどのようなことなのでしょうか?
本を参照しても分からないので・・・。
 できれば例を挙げて頂けると幸いです。
 どなたかよろしくお願い致します。

http://www.geocities.co.jp/HeartLand-Gaien/6716/


[104] Re: 言葉の意味は? 投稿者:にょろにょろ 投稿日:1999/09/03(Fri) 12:44

>  SQL文で、「INDEXを張る」というのはどのようなことなのでしょうか?
> 本を参照しても分からないので・・・。
>  できれば例を挙げて頂けると幸いです。
>  どなたかよろしくお願い致します。

create index文により、テーブルに対してインデックスを
作成する事を言います。
何故、indexを定義するかというと、行の検索スピードが大幅に
向上するからです。
但し、長所ばかりではなく、短所もあります。

indexの数を多くし過ぎると、更新処理が遅くなります。
何故かというとインデックス付きの列を含むupdate文やinsert文を
実行する時に、インデックスも更新しなければいけないからです。

構文は、次のように書きます。
  create index インデックス名
  on テーブル名
;


[105] Re^2: 言葉の意味は? 投稿者:あぶく 投稿日:1999/09/06(Mon) 15:20

>
> create index文により、テーブルに対してインデックスを
> 作成する事を言います。
> 何故、indexを定義するかというと、行の検索スピードが大幅に
> 向上するからです。
> 但し、長所ばかりではなく、短所もあります。
>
> indexの数を多くし過ぎると、更新処理が遅くなります。
> 何故かというとインデックス付きの列を含むupdate文やinsert文を
> 実行する時に、インデックスも更新しなければいけないからです。
>
> 構文は、次のように書きます。
>   create index インデックス名
>   on テーブル名
> ;
>
ありがとうございます。良く意味がわかりました。

http://www.geocities.co.jp/HeartLand-Gaien/6716/


[102] sql.logについて 投稿者:yoko 投稿日:1999/09/01(Wed) 14:54

SQL.logについての質問です。
このログが、増えて困っています。
ODBCのトレースはOFFにしています。

現在、Index.serverも使用していますが、
このログはどこから、吐き出されるものか、教えてください。


[107] Re: sql.logについて 投稿者:にょろにょろ 投稿日:1999/09/08(Wed) 12:37

> SQL.logについての質問です。
> このログが、増えて困っています。
> ODBCのトレースはOFFにしています。
>
> 現在、Index.serverも使用していますが、
> このログはどこから、吐き出されるものか、教えてください。

これは、WindowsNT上のSQL Server環境でしょうか?
うろ覚えですが、何かの雑誌で、IISが吐き出しているという
記事が書いてあったような気がします。
←何の雑誌だったかは、忘れてしまいました。(^_^;

間違えてましたらご免なさい。


[101] リッチテキストの内容をSQLに格納できる? 投稿者: 投稿日:1999/08/27(Fri) 15:34

こんにちは。花です。
リッチテキストの内容をSQLに送ってデータベースに
格納したいんですけど、そんな事はできるでしょうか?
もし、できるならば教えて下さい!
(ASP・VBSCRIPTを使ってかいてます)


[100] テーブルのフィールド名が取得したいのですが。。。 投稿者:taro 投稿日:1999/08/03(Tue) 13:15

SQLで作ったテーブルのフィールド名をリスト内のレコードソースにしたいのですが、誰か方法をご存知ないですか?


[98] view 投稿者:庵@新入社員 投稿日:1999/07/21(Wed) 14:22

SQLプログラミング入門を、課題として与えられて読んでいます。
この中で、viewがありますが、良く分かりません。混乱してしまいます。
まず、1,viewと一時表の違いとは何ですか?
     一時的に残ることと、消さない限り残ることの違いですか?
   2,概念的に、viewは(ある一部分もしくは全部を)コピーみ     たいな感じと思っていいんですか?
   3,viewの利点が分かりません。複雑な処理を簡略化と書いて
     ありますが、実際そうなんでしょうか??


[108] Re: view 投稿者:フロンちゃん 投稿日:1999/09/22(Wed) 11:20

> SQLプログラミング入門を、課題として与えられて読んでいます。
> この中で、viewがありますが、良く分かりません。混乱してしまいます。
> まず、1,viewと一時表の違いとは何ですか?
>      一時的に残ることと、消さない限り残ることの違いですか?
viewは元になるテーブルに対する覗き窓のようなもので、
あるいは元になるテーブルに対するLINKのようなもの
です。
したがってviewのフィールドに更新したら(すべてのview
のすべてのフィールドが更新できるわけではないが)
元のテーブルの相当するフィールドが更新されます。
一時表は物理的に別物で上記の更新をしても
土台のテーブルは不変です。
>    2,概念的に、viewは(ある一部分もしくは全部を)コピーみ     たいな感じと思っていいんですか?
上記のごとくコピーじゃないです。
>    3,viewの利点が分かりません。複雑な処理を簡略化と書いて
>      ありますが、実際そうなんでしょうか??
たとえばTBLに「売上」というフィールドがあって
一回
create view v消費税 as
select *,売上*0.05 as 消費税
from TBL
を作ってしまえば,そのあと消費税を参照する
問い合わせをv消費税からいくつも作れます。
(,売上*0.05と言う表記は1回限りで良い
売上*0.05くらいのかんたんな式なら何遍書いても
知れてますが、もっと複雑な式でも簡略化できます。)
同様の一時表なら土台のテーブルが更新されたら
一時表も作り直しですが、
viewならそのviewを参照する問い合わせを
もう一度呼び直せば済みます。
1.と関連しますが、この場合の消費税フィールドは
更新できません。


[97] 仕様書のないDB 投稿者:イエイエ 投稿日:1999/07/16(Fri) 21:35

こんにちは。オラクルを本日始めました。
いきなり仕様書なしのDBからすべてのテーブルを検索するという
仕事を任されました。

DB内のテーブルのリストをすべて表示するというコマンド
を知っている方、よろしくお願いします。


[95] Select 構文 投稿者:延行 投稿日:1999/06/29(Tue) 13:40

どうしても以下の構文の意味がわかりません。
どうか教えていただけないでしょうか?
VB6.0の中の「DATATREE」サンプルデータの中の分です。


Dim strQ As String
strQ = "SELECT Authors.Author, Titles.ISBN, Titles.[Year Published], " _
& "Titles.Description FROM Authors INNER JOIN (Titles INNER JOIN " _
& "[Title Author] ON " _
& "Titles.ISBN = [Title Author].ISBN) ON Authors.Au_ID = " _
& "[Title Author].Au_ID WHERE Titles.ISBN='" & ISBN & " '"


[93] ワイルドカード 投稿者:YN 投稿日:1999/06/21(Mon) 13:59

はじめまして。
(基本中の基本のような質問ですが・・・)

SELECT文(WHERE句)でワイルドカードを使う場合はLIKEを使うと
あったのですが、それを使って等しくないものを求めるにはどのように
文を書いたらよいのでしょうか?

今使っているSELECT文はこんな感じです。

SELECT COUNT(*) FROM あいうえお_TBL WHERE
NO1 = ANY(SELECT NO1 FROM かきくけこ_TBL WHERE
FLG = '0') AND NGFLG IS NULL;

これで あいうえお_TBL の CDNO の中の '1234%'ではないものすべてを
COUNTしたいのです。

解りづらいとはおもいますが、初心者ですのでお許しください。
よいお知恵をお願いします。


[99] Re: ワイルドカード 投稿者: 投稿日:1999/07/28(Wed) 14:57

> はじめまして。
> (基本中の基本のような質問ですが・・・)
>
> SELECT文(WHERE句)でワイルドカードを使う場合はLIKEを使うと
> あったのですが、それを使って等しくないものを求めるにはどのように
> 文を書いたらよいのでしょうか?
>
> 今使っているSELECT文はこんな感じです。
>
> SELECT COUNT(*) FROM あいうえお_TBL WHERE
> NO1 = ANY(SELECT NO1 FROM かきくけこ_TBL WHERE
> FLG = '0') AND NGFLG IS NULL;
>
> これで あいうえお_TBL の CDNO の中の '1234%'ではないものすべてを
> COUNTしたいのです。
>
> 解りづらいとはおもいますが、初心者ですのでお許しください。
> よいお知恵をお願いします。
>

WHERE CDNO NOT LIKE '1234%'
ではだめですか?


[94] Re: ワイルドカード 投稿者:YN 投稿日:1999/06/21(Mon) 14:10

> はじめまして。
> (基本中の基本のような質問ですが・・・)
>
> SELECT文(WHERE句)でワイルドカードを使う場合はLIKEを使うと
> あったのですが、それを使って等しくないものを求めるにはどのように
> 文を書いたらよいのでしょうか?
>
> 今使っているSELECT文はこんな感じです。
>
> SELECT COUNT(*) FROM あいうえお_TBL WHERE
> NO1 = ANY(SELECT NO1 FROM かきくけこ_TBL WHERE
> FLG = '0') AND NGFLG IS NULL;
>
> これで あいうえお_TBL の CDNO の中の '1234%'ではないものすべてを
> COUNTしたいのです。
>
> 解りづらいとはおもいますが、初心者ですのでお許しください。
> よいお知恵をお願いします。
>


書き忘れてしまいましたが、使っている環境はoracleです。


[92] ビューについて 投稿者:F.I 投稿日:1999/06/16(Wed) 14:20

超初心者なので、わかりやすく教えていただけると助かります。

現在、Inside Windowsの去年の1月号、特集SQLを読みながら学習
しているのですが、ビューについて理解しきれないので質問します。

40ページ11行目:「ビューに対する処理が正しく行われるのは実表に対する
処理に的確に変換される保証がある場合のみ」とありますが、
実表に対する処理に的確に変換されるというのは、どういう意味なので
しょうか…?


[91] SQL生成 投稿者:TOPPO 投稿日:1999/06/09(Wed) 11:52

VC++で、文字列変数 char val = "aa" を用いて
検索条件 where name = 'aa'を生成する場合、
どのような方法がありますでしょうか?

valに対して文字列処理をごりごりやるしかないのでしょうか?
””の処理がネックとなっています。
基本的な質問ですがよろしくお願いします。


[109] Re: SQL生成 投稿者:フロンちゃん 投稿日:1999/09/22(Wed) 11:29

> VC++で、文字列変数 char val = "aa" を用いて
> 検索条件 where name = 'aa'を生成する場合、
> どのような方法がありますでしょうか?
>
> valに対して文字列処理をごりごりやるしかないのでしょうか?
> ””の処理がネックとなっています。
> 基本的な質問ですがよろしくお願いします。
char valは型が違うでしょ?
(char型は1文字しか入らないよ)

char *val;
char s[20];
sprintf(s,"where name='%s'",val)
で%sのところがaaになるけど...


[88] データの抽出について 投稿者:SQLばりばり 投稿日:1999/06/02(Wed) 18:09

あるテーブルの項目に格納されているデータの
一文字目だけを取り出す関数というものは有るのでしょうか?
ORACLE使ってます。
御存じのかたは大至急お願い。


[89] サブストリングは? 投稿者:みけこ 投稿日:1999/06/03(Thu) 02:40

わたしはORACLEを直接使ってはいないのですが・・・

一文字目だけを取り出すということに特化した関数はないと思いますが、
サブストリング関数で取り出せると思います。
substr(文字列,取り出し開始桁,取り出し桁数)
です。
つまり一文字目だけを取り出すには、substr(文字列,1,1)、とすればいいですね。

多少綴り方が違うかもしれませんので、確認してみてください。(substringとか
かも知れません)

ちなみに、わたしの使っている開発環境では、
left(文字列,取り出し桁数)
という関数も使えますが、ORACLEではダメだったかも。 試して見てください。


[90] そのとうりです。 投稿者:ぷー 投稿日:1999/06/05(Sat) 22:25

> つまり一文字目だけを取り出すには、substr(文字列,1,1)、とすればいいですね。

オラクル使っていますけど、まだ初心者。
このつづりであっています。(たぶん)
昨日使ったからあっているはづ。


[87] こんな事したいんですが… 投稿者:35歳 投稿日:1999/05/18(Tue) 00:39

ORACLEを使っています。

簡単な例を書きます。

TABLE名:TENSU_TBL

NEN NUMBER(2)
KUMI NUMBER(2)
BANGO NUMBER(2)
TEN NUMBER(3)

年 組 番号 点数
1 1 1 15
1 1 2 25
1 1 3 10
1 2 1 12
1 2 2 3
2 1 1 30
2 2 1 40
2 2 2 25
3 1 1 0
3 1 2 8
3 2 1 15
3 2 2 5

これを(年,組)毎に集計したいのですが、
並びは年毎の集計で合計点の多い学年順に
並べます。

年 組 合計点
2 1 30
2 2 65
1 1 50
1 2 15
3 1 8
3 2 20

以上です。
宜しくお願いします。


[86] わけあって 投稿者:みけこ 投稿日:1999/05/10(Mon) 03:17

わけあって、マニュアル無しで開発していてます。

『SQLプログラミング入門』とてもいい本ですね。 あまりのていねいさ、
親切さに感激しました。
ああ〜、この本が5年前にあったなら、どんなにか楽だったか・・・と
涙が出てしまいました。(大げさではありません、ホントにですよ〜)

SQL関係は訳本がほとんどですが、これは単なる訳本ではないのですね。
今は手元にないマニュアルをはじめとする「単なる訳本」には閉口しま
した。 内容以前に日本語が難解で(^^;

これからも、マニュアルがほとんどない状態で開発していかなければ
ならないと思います。 そんなわけで、きっとお世話になると思います、
どうぞよろしくお願いいたします。m(__)m


[85] 間違い発見。 投稿者:なるるここ 投稿日:1999/04/16(Fri) 11:23

GROUP BY なんですが、GROPU BYになっています。
また違っていたら教えますので、がんばって下さい。


[84] 勉強になりました。 投稿者:なるるここ 投稿日:1999/04/16(Fri) 10:42

私は、SQLをほとんど知らなかったのですが、ここの説明を見て理解する事ができました。今後もSQLを勉強していくので、応援しています。


[81] SQLでの日付の求め方 投稿者:六車敏章 投稿日:1999/04/01(Thu) 11:37

教えてください。
現在、ノーツポンプのダイレクトトランスファーでSQL文を使用してデータの選択をしているのです。計算式としては納期 > 日付の計算をしたいのですがうまくいきません。SQLとしては日付の部分に何を入れればいいのでしょうか。教えてください。よろしくお願いします。


[74] joinって? 投稿者:れおん 投稿日:1999/03/25(Thu) 10:57

JOINというのがよくわからないのですが・・

わかりやすい説明をどなたかお願いします。


[76] Re: joinって? 投稿者:iwa 投稿日:1999/03/25(Thu) 12:46

> JOINというのがよくわからないのですが・・
>
> わかりやすい説明をどなたかお願いします。
>
JOINは別テーブルのあるフィールドと
検索したい(とは限らないが)テーブルのフィールドを
結合させることです。JOINをすればその結合された
フィールド同士で同じ内容のものだけが選択されます。
たとえばテーブルAに日付のフィールドあり、他方テーブルBに
日付のフィールドがあるとします。ただしテーブルAと
テーブルBの日付の中身は一部だけ同じ日付がはいっていて、
すべて同じなわけではないとします。
このときテーブルA.日付 INNER JOIN テーブルB.日付
とするとテーブルAとテーブルBの日付の中で同じ日付
のレコードだけが選択されます。簡単にいうとこんなところです。
JOINにはINNER JOIN、LEFT JOIN、RIGHT JOINがあります。
しかしここで説明するにはかなりスペース的に無理があるかも
なのでSQLの本を読むなりホームページを探すなりした方が
よいかも知れません。
一応この下の大塚さんのQである「重複レコードの削除」の
ところでJOINを使っているので参考にして見てください。


[73] 排他制御とTRANSACTION 投稿者:まる子の父ヒロシ 投稿日:1999/03/25(Thu) 10:35

皆しゃん。こんちわー。まる子の父ヒロシです。よろすく。

P286-291にかけての質問です。
SET TRANSACTION READ WRITE;とすると、
他のユーザーが、UPDATE,INSERT,DELETE文を実行できるため、
排他制御にならなくて、困るのでは?
それでは、SET TRANSACTION READ WRITE;を実行する意味がないと思うのですが?


[77] Re: 排他制御とTRANSACTION 投稿者:きむ 投稿日:1999/03/27(Sat) 03:04

こんにちわ。

> P286-291にかけての質問です。
> SET TRANSACTION READ WRITE;とすると、
> 他のユーザーが、UPDATE,INSERT,DELETE文を実行できるため、
> 排他制御にならなくて、困るのでは?
> それでは、SET TRANSACTION READ WRITE;を実行する意味がないと思うのですが?

いまいち、御質問の意味が読み取れないので申し訳ないのですが、READ WRITE が指定されている所はデータを変更する例として使用しているので、もちろん他のユーザーも変更が行えます。
では、全く意味がないかというと、そうではありません。なぜなら、この文でトランザクションが開始されることになるからです。


[78] Re^2: 排他制御とTRANSACTION 投稿者:まる子の父ヒロシ 投稿日:1999/03/27(Sat) 20:01

きむさん、回答ありがとうございまーす。独学なもんで助かります。

>>P286-291にかけての質問です。
>>SET TRANSACTION READ WRITE;とすると、
>>他のユーザーが、UPDATE,INSERT,DELETE文を実行できるため、
>>排他制御にならなくて、困るのでは?
>>それでは、SET TRANSACTION READ WRITE;を実行する意味がないと思うのですが?
>
> いまいち、御質問の意味が読み取れないので申し訳ないのですが、READ WRITE が指定されている所はデータを変更する例として使用しているので、もちろん他のユーザーも変更が行えます。
> では、全く意味がないかというと、そうではありません。なぜなら、この文でトランザクションが開始されることになるからです。

解り難くてすいません。言い方をかえます。
トランザクションするのは、データを変更するとき、後でロールバックで取り消すためです。
つまり、データを変更するのだから、データが正しいことが必要です。
つまり、他のユーザにはデータをロックしておくことが必要です。
ということは、データをロックしないで、トランザクション開始する意味はないと思うのです。
どうでしょうか?


[79] Re^3: 排他制御とTRANSACTION 投稿者:きむ 投稿日:1999/03/28(Sun) 03:44

> ということは、データをロックしないで、トランザクション開始する意味はないと思うのです。
> どうでしょうか?

データベースの排他制御に関しては使用する各データベースによって多種多様ですが、処理の並列性とデータの信頼性の間には常に深刻なトレードオフがつきものです。
データにロックを書けた場合、他の更新をロックされているデータが開放されるまで待たせることになりますが、複数のユーザーから同時に利用されるデータベースにとって常に理想的であるとは限りません。つまり、データの更新を覚悟でトランザクション開始するというのも意味があるかと思いますが如何でしょうか。


[80] Re^4: 排他制御とTRANSACTION 投稿者:まる子の父ヒロシ 投稿日:1999/03/29(Mon) 18:17

> データベースの排他制御に関しては使用する各データベースによって多種多様ですが、処理の並列性とデータの信頼性の間には常に深刻なトレードオフがつきものです。
> データにロックを書けた場合、他の更新をロックされているデータが開放されるまで待たせることになりますが、複数のユーザーから同時に利用されるデータベースにとって常に理想的であるとは限りません。つまり、データの更新を覚悟でトランザクション開始するというのも意味があるかと思いますが如何でしょうか。

回答どーもありがとうございます。
ははーん、解りました。ぼくは、初心者で、クライアント、サーバーのデータベースを開発したことがない
のですが、実際には、データの更新を覚悟で(ちょっと恐い)トランザクション開始することがあるんですね。
これで、納得しました。奥が深いですね。


[69] 重複レコードの削除 投稿者:大塚 投稿日:1999/03/23(Tue) 17:00

SQL初心者です。
あるテーブルに以下のようなデータがあった場合

a b c d e
- - --- --- ---
1 1 aaa AAA BBB
1 1 bbb CCC DDD
1 1 ccc EEE FFF
2 1 aaa GGG HHH

最終的に以下のようにしたいのですが(a,bが同じ場合cの最大
のものだけ残す)

a b c d e
- - --- --- ---
1 1 ccc EEE FFF
2 1 aaa GGG HHH

SQL文で実現できるのでしょうか?
DELETE文1行で出来れば最高ですし、テンポラリテーブルを利用
する方法でも構いません。
どなたか教えていただければ助かります。


[70] Re: 重複レコードの削除 投稿者:iwa 投稿日:1999/03/24(Wed) 12:31

> SQL初心者です。
> あるテーブルに以下のようなデータがあった場合
>
> a b c d e
> - - --- --- ---
> 1 1 aaa AAA BBB
> 1 1 bbb CCC DDD
> 1 1 ccc EEE FFF
> 2 1 aaa GGG HHH
>
> 最終的に以下のようにしたいのですが(a,bが同じ場合cの最大
> のものだけ残す)
>
> a b c d e
> - - --- --- ---
> 1 1 ccc EEE FFF
> 2 1 aaa GGG HHH
>
> SQL文で実現できるのでしょうか?
> DELETE文1行で出来れば最高ですし、テンポラリテーブルを利用
> する方法でも構いません。
> どなたか教えていただければ助かります。
>

こんにちは。
一番わかりやすいのはまずセレクト文で
残したいレコードを選択した後それをテンポラリテーブルに
インサートし、元のテーブルをdropしてテンポラリを
元々のテーブル名に変えるという手順ではないでしょうか。
あんまり小難しく考えない方がかえって早く済むものです。


[71] Re^2: 重複レコードの削除 投稿者:大塚 投稿日:1999/03/24(Wed) 17:12

> こんにちは。
> 一番わかりやすいのはまずセレクト文で
> 残したいレコードを選択した後それをテンポラリテーブルに
> インサートし、元のテーブルをdropしてテンポラリを
> 元々のテーブル名に変えるという手順ではないでしょうか。
> あんまり小難しく考えない方がかえって早く済むものです。

はい、それでいいと思っているんですが残したいレコードを選択する
方法が分からないのです。
たとえば以下のようなテーブルの場合

a b  c
- - ---
1 1 aaa
1 1 bbb
2 1 ddd
2 1 ccc

このようなSQL文で実現できたのですが

select distinct a,b,max(c) as c into tmp from tbl group by a,b
drop table tbl
select * into tbl from tmp
drop table tmp

比較に関係しない項目のデータを取得する方法が分かりません。
やっぱり無理なんでしょうか?


[72] Re^3: 重複レコードの削除 投稿者:iwa 投稿日:1999/03/24(Wed) 21:22

こんにちは。もうこんばんはの時間だった。

試してないのでほんとにうまく行くかわかりませんが

SELECT * into 引越しテーブル
FROM 基テーブル
where a = b and c = (select max(c) from xxx group by a, b);

こんな感じのSQL文ではないでしょうか。
違ってたらごめんなさい。なんか違うような気もしてきた。


[75] わかりました。 投稿者:iwa 投稿日:1999/03/25(Thu) 12:23

まず
create view (viewの名前を適当に)
as select a, b, max(c) as c
from 基テーブル
group by a, b;

でviewを作成します。
次に
select 基テーブル.*
from (viewの名前) inner join 基テーブル on
(viewの名前).a = 基テーブル.a, (viewの名前).b = 基テーブル.b
where 基テーブル.c = (viewの名前).c
で選択します。
これをviewにするか別テーブルにするかは好みでしょう。


[62] テーブルの列削除と列名変更がわかりません 投稿者:ホウ 投稿日:99/03/05(Fri) 15:20

こんにちは。質問が2点あるのですが、どなたか分かる方お応えお願い致します。
1、テーブル内の列をまるごと削除したい
DELETEを使用すれば列の中の値を削除する事は可能ですが、この列
そのものを削除する方法はあるのでしょうか?私は一度テーブル
全体を削除して、不要な列だけを外してcreate tableを行っています。
(delete、dropと考えられる事を試したのですが・・・)
2、列名を変更したい
テーブル名を変更するように列名を変更したいと考えたのですが
できませんでした。この場合も上記と同様一度テーブルを削除して・・・
という方法で対応していますがもっと便利な方法があるのでしょうか。
宜しくお願いいたします。


[65] Re: テーブルの列削除と列名変更がわかりません 投稿者:きむ 投稿日:99/03/17(Wed) 15:10

> 1、テーブル内の列をまるごと削除したい
> 2、列名を変更したい

こんにちは。
使用しているRDBによっては、ダイレクトに列の削除や列名の変更を行うSQL構文が提供されている場合があります。
大体、 RENAME COLUMN や DROP, DELETE などのキーワードです。
ただし、色々試されているようなので、特にそう言った機能が無い場合なようですね。
こういった場合は、通常は仮の表を作って対応します。例えば目的の列を削除したい場合( OLD_TABLE の COL2 を削除したい場合 )は

CREATE TABLE NEW_TABLE AS SELECT COL1, COL3 FROM OLD_TABLE;

といった感じにします。列名の変更も同じようにすればできます。

CREATE TABLE NEW_TABLE( NEW_COL ) AS SELECT COL2 FROM OLD_TABLE;

COL2 を NEW_COL という名前に変更する。(結局今までやっていた方法でしたらすみません。)


[61] 超初心者の質問 投稿者:れおん 投稿日:99/03/05(Fri) 11:26

はじめまして。
入社してからいままでC言語の研修を受けてきました。

そのあと、SQLの2日間の講習,PL/SQLは5日間の講習に。

それから1月ブランクの後、仕事でPL/SQLを使いはじめて1ヶ月。
実務経験のまったくない私には今がヤマです。

職場ではORACLEをつかっています。
参考になりそうなことや、書籍があったらご紹介いただけませんか。

よろしくお願いします。


[66] Re: 超初心者の質問 投稿者:きむ 投稿日:99/03/17(Wed) 15:23

> 職場ではORACLEをつかっています。
> 参考になりそうなことや、書籍があったらご紹介いただけませんか。

こんにちわ。
あんまり、他書籍を宣伝すると怒られそうなのですが、とある調査によると、ORACLE系では

ORACLE Performance Tuning(O'Reilly & Associates,Inc)

が一番人気があるようです。SQLプログラミング入門もよろしくー。


[110] Re^2: 超初心者の質問 投稿者:HIDE 投稿日:1999/09/29(Wed) 17:47

>>職場ではORACLEをつかっています。
>>参考になりそうなことや、書籍があったらご紹介いただけませんか。
>
> こんにちわ。
> あんまり、他書籍を宣伝すると怒られそうなのですが、とある調査によると、ORACLE系では
>
> ORACLE Performance Tuning(O'Reilly & Associates,Inc)
>
> が一番人気があるようです。SQLプログラミング入門もよろしくー。

はじめまして!私の職場でも最近 ORACLE を導入した為、SQLを覚えなくてはいけなくなりました。
ORACLE Performance Tuning(O'Reilly & Associates,Inc)の本について著者名・発行所・ISBN No.・価格等教えていただきたいのですが、よろしくお願いします。ちなみに SQLプログラミング入門 は購入しました。


[67] Re^2: 超初心者の質問 投稿者:れおん 投稿日:1999/03/19(Fri) 14:57

> こんにちわ。
> あんまり、他書籍を宣伝すると怒られそうなのですが、とある調査によると、ORACLE系では
>
> ORACLE Performance Tuning(O'Reilly & Associates,Inc)
>
> が一番人気があるようです。SQLプログラミング入門もよろしくー。

☆どうもありがとうございますm(_ _)m

PL−のほうは、SQLが満足にかけないのにやろうとしたので、大失敗。
いま、SQLの問題を出してもらって、見てもらっています。
みんなの仕事の足を引っ張ってる状態です・・・悲しい(#-_-)凸。

今までテーブルの参照とかも単純なものしかやってないのに、いきなり
システムを作るという大仕事は無理でした(>_<)。

すぐにSQLとリレーショナルデータベースって使いこなせるものなの
でしょうか?
いままでC言語の研修をやってたのですがデータベースの考え方は・・

これから、SQL入門を使って勉強します!!







[60] (無題) 投稿者:2000m 投稿日:99/02/23(Tue) 17:51

はじめまして。2000mと申します。
宜しくお願い致します。

クライアントがOracle Lite, サーバーがOracle8 で、クライアントからサーバーにデータをinsertしたいんですが。
上司からパラメータ配列を使えといわれ、(GUIはVBです)
insert into tableA(bbb,ccc) value (:bbb,:ccc)
という文を上司に教えて頂いたのですが。
ちなみにテーブル内の項目名は全角、サーバもクライアントも同じ項目名です。(項目数83)
バインド変数もテーブルと同じ項目名を使っています。
そこで実行しますと、SQL実行部分で"配列を処理中にエラーが発生しました。"のエラーがでます。
VB-OIP-04139というエラー番号なのですが、VB_helpを探しても見当たりません。
エラーメッセージにはWindowsディレクトリ内のoo4oerr.logを見ろと書いてあるのですが、探しても何もかかれていないみたいなのです。

これらのコードが、よく理解していないSQL文を実行すると一遍に出てきてどこから手をつけていいかわかりません。

訳の解らない質問で申し訳ありません。
もしお時間ありましたら、ご助言願えないでしょうか。
宜しくお願い致します。


[55] UNIQUEインデックスについて 投稿者:グッチ 投稿日:99/02/22(Mon) 14:58

SQLプログラミング入門の P.279 の注意欄に、
Oracleなどの製品では、UNIQUEのこのような機能をサポート
していません。......」という記述がありますが、

私は Oracleで CREATE UNIQUE INDEX ... としてインデックスを
作成しています。
SQL 文のトレースをとると、インデックスの所に (uniq) と表示されます。

Oracle では、UNIQUEの機能をサポートしているように思えるのですが、
いかがなものでしょうか?


[56] Re: UNIQUEインデックスについて 投稿者:きむ 投稿日:99/02/22(Mon) 23:37

> SQLプログラミング入門の P.279 の注意欄に、
> Oracleなどの製品では、UNIQUEのこのような機能をサポート
> していません。......」という記述がありますが、
> Oracle では、UNIQUEの機能をサポートしているように思えるのですが、
> いかがなものでしょうか?

確認したORACLEのバージョンはいくつでしょうか?
実は、ORACLE8ではグッチさんの言うように CREATE UNIQUE INDEX の構文をサポートしています。
しかしながら、この本の原書では ORACLE7 ではこの構文はサポートしていないという記述があります。そのため、本書ではこのような注釈が入れてあります。
正直なところ、本書ではORACLE7は動作検証の対象となっていないので確認しておりません。ORACLE7でも動作するようでしたら連絡して頂けると嬉しいです。ORACLE7は手元にないので私の方で確認できませんでした。
ただし、あいまいな表現ですのでこのホームページでアナウンスしたいかと思います。


[57] Re^2: UNIQUEインデックスについて 投稿者:グッチ 投稿日:99/02/23(Tue) 11:58

> 確認したORACLEのバージョンはいくつでしょうか?

Solaris版 Oracle7 Ver7.1.6 と Personal Oracle7.2.2 です。

ただし、手元にあるマニュアル(Oracle7 Server SQL言語リファレンス・マニュアル 第7版:1995年8月)
には、CREATE INDEX の構文に、UNIQUEキーワードの記述はありません。
よって、サポート外なのかも知れませんけど、業務の中では数多く定義して使用しています。


[53] DB2(IBM)をSELECTする時に・・・ 投稿者:ねむ 投稿日:99/02/20(Sat) 18:00

はじめまして。困っています。

DB2のグラフィック列をLike指定で検索したいのですが。。

where 列名 like :ホスト変数

ホスト変数は画面より入力された漢字です。
漢字制御文字(0e,0f)は、ホスト変数内より削除するのですか?

'_'または'%'は半角で付加すれば良いのでしょうか?

色々試していますが、sqlcode = -401 が戻ります。
宜しく、お願いします。


[51] SQLはWeb上に運用方法を教えって 投稿者:Zhang 投稿日:99/02/19(Fri) 12:33

AccessとSQLのデータベースをありますが、
これからWebサーバに活用したい、
ODBCのDSNも作成しました。
後Htmlでどう呼び出しますか?
是非方法を教えって下さい。


[48] EXISTSの意味が分かりません。 投稿者:大山 投稿日:99/02/18(Thu) 14:41

はじめまして。かじりついたばかりの超初心者です。
EXISTSの使用方法が今一つ分かりません。
例えばselect文でのwhere以下において

where not exists (select * from po_lines pol where
pol.po_header_id = po_header_all.po_header_id and
pol.attribute1 = 'Y');

このような時上記の文をどのように理解すればよいか分かりません。
マニュアルにある「副問合せが1行以上戻す場合にTRUEと評価される」
という説明でますます混乱しています。
どうかわかりやすい説明をお願いできないしょうか。


[49] Re: EXISTSの意味が分かりません。 投稿者:きむ 投稿日:99/02/18(Thu) 21:34

> EXISTSの使用方法が今一つ分かりません。
> 例えばselect文でのwhere以下において
>
> where not exists (select * from po_lines pol where
> pol.po_header_id = po_header_all.po_header_id and
> pol.attribute1 = 'Y');
>
> このような時上記の文をどのように理解すればよいか分かりません。

こんにちわ。
EXSISTは問い合わせた結果セットが存在すれは TRUE, しなければ FALSE を返すキーワードです。
上記の例だと、まず、exsists内のサブクエリーを評価します。po_lines表中にwhere句以下の条件が成り立つ行が一つでも存在すれば、SELECT文は何らかの結果セットを返すのでexistsの値は TRUE になります。最終的な where句は not が付いているのでその反対ですね。


[64] Re^2: EXISTSの意味が分かりません。 投稿者:大山 投稿日:99/03/05(Fri) 15:23

お礼が遅くなりすいません。
ありがとうございました。


[45] カタカナをひらがなに変換する方法教えて下さい。 投稿者:岩本 投稿日:99/02/18(Thu) 09:13

どなたか、いったんレコードになったカタカナの文字をひらがなに
変換する方法を御存じないでしょうか。rawtohex関数でコードに
変換したあとコードを編集してhextoraw関数で戻すという方法で
やってみたらダメでした。ちなみにEUCコードです。


[46] Re: カタカナをひらがなに変換する方法教えて下さい。 投稿者:きむ 投稿日:99/02/18(Thu) 10:31

> どなたか、いったんレコードになったカタカナの文字をひらがなに
> 変換する方法を御存じないでしょうか。

かなり長い文になりそうですが、TRANSLATEで変換するというのはどうでしょう。


[47] ありがとうございます。 投稿者:岩本 投稿日:99/02/18(Thu) 12:18

> かなり長い文になりそうですが、TRANSLATEで変換するというのはどうでしょう。

ありがとうございます。早速試してみます。


[40] トランザクションに関連する用語 投稿者:yos 投稿日:99/02/13(Sat) 21:08

yosと申します。

データベースに関係ある本を読んでいたところ、
トランザクション分離レベル(Transaction Isolation Level)
というところの説明で突然見たことがない用語が出てきました。

反復不能読み取り
ファントムリード

例えば、「(このトランザクション分離レベルでは)反復不能読み取り
が許されないが、ファントムリードは可能」のように使用されています。

これらの用語は一体どういう意味なのでしょうか?


[42] Re: トランザクションに関連する用語 投稿者:きむ 投稿日:99/02/16(Tue) 00:37

> トランザクション分離レベル(Transaction Isolation Level)
> というところの説明で突然見たことがない用語が出てきました。
>
> 反復不能読み取り
> ファントムリード
>
> 例えば、「(このトランザクション分離レベルでは)反復不能読み取り
> が許されないが、ファントムリードは可能」のように使用されています。
>
> これらの用語は一体どういう意味なのでしょうか?

まず、ファント値とは読み取り後にロールバックされる値のことを言います。一般に、あるトランザクションの中で前に読み取られている値に対して、別のトランザクションによって更新されることは好ましくないため、トランザクションのレベルによってこれを防止するようにします。
反復不能読み取りとは、同じトランザクション中で読み出しの度に、同じ値が返ることを保証することです。
それと、もう一つよく出てくるのが、ダーティリードと言うやつで、コミットされていないデータを読み取ることを言います。


[42] Re: トランザクションに関連する用語 投稿者:きむ 投稿日:99/02/16(Tue) 00:37

> トランザクション分離レベル(Transaction Isolation Level)
> というところの説明で突然見たことがない用語が出てきました。
>
> 反復不能読み取り
> ファントムリード
>
> 例えば、「(このトランザクション分離レベルでは)反復不能読み取り
> が許されないが、ファントムリードは可能」のように使用されています。
>
> これらの用語は一体どういう意味なのでしょうか?

まず、ファント値とは読み取り後にロールバックされる値のことを言います。一般に、あるトランザクションの中で前に読み取られている値に対して、別のトランザクションによって更新されることは好ましくないため、トランザクションのレベルによってこれを防止するようにします。
反復不能読み取りとは、同じトランザクション中で読み出しの度に、同じ値が返ることを保証することです。
それと、もう一つよく出てくるのが、ダーティリードと言うやつで、コミットされていないデータを読み取ることを言います。


[52] Re^2: トランザクションに関連する用語 投稿者:yos 投稿日:99/02/20(Sat) 02:13

yosと申します。

> まず、ファント値とは読み取り後にロールバックされる値のことを言います。一般に、あるトランザクションの中で前に読み取られている値に対して、別のトランザクションによって更新されることは好ましくないため、トランザクションのレベルによってこれを防止するようにします。
> 反復不能読み取りとは、同じトランザクション中で読み出しの度に、同じ値が返ることを保証することです。
> それと、もう一つよく出てくるのが、ダーティリードと言うやつで、コミットされていないデータを読み取ることを言います。

解説していただきありがとうございます。うーむ...正直言ってまだよく分かっていません(苦笑)

ダーティリード = コミットされていないデータを読み取ること、というのは私も何とか理解できました。しかし、ファントム値 = 読み取り後にロールバックされる値ということは、ファントムリードとダーティリードの違いがよく分かりません。
また、ファントムリードは反復不能読み取りの一種?とも思ってしまったりします。

実はこれを読んだ本というのは「JDBCによるデータベースアクセス」(ASCII)という本で、問題の用語はSetTransactionIsolation()という、トランザクション分離レベルを設定するAPIの説明のところにあったものです。(P156〜158)

このAPIで設定可能なトランザクション分離レベルは4つあり、上記本の説明を一部引用すると
---
TRANSACTION_READ_UNCOMMITTED
ダーティリード、反復不能な読み取り、およびファントムリードが可能なことを設定する。(以下続く...)

TRANSACTION_READ_COMMITTED
ダーティリードが許されないことを指定する。ただし、反復不能な読み取りとファントムリードは可能である。(以下続く...)

TRANSACTION_REPEATABLE_READ
ダーティリードと反復不能読み取りが許されないことを指定する。ファントムリードは可能である。

TRANSACTION_SERIALIZABLE
ダーティリード反復不能読み取り、およびファントムリードがすべて許されないことを指定する。(以下続く...)
---

となっています。つまりダーティリード、反復不能読み取り、ファントムリードを完全に区別して扱っているのですが...どうもこれらの違いがはっきり分かりません。ううむ...


[54] Re^3: トランザクションに関連する用語 投稿者:Foucault 投稿日:99/02/21(Sun) 18:17

> yosさん
>
> となっています。つまりダーティリード、反復不能読み取り、ファントムリードを完全に区別して扱っているのですが...どうもこれらの違いがはっきり分かりません。ううむ...
>

はじめまして。
ずいぶん前にこの手の話を読んだ記憶があるので探したら見つかりました。

http://www.sybase.co.jp/sybmagazine/vol8/databese.html

『サイベースマガジン』というSybaseの広報誌なのですが、引用すると以下のように書かれてあります。

========= 以下、引用 =========
■ P1(ダーティ・リード):トランザクションT1が行を修正したあとにトランザクションT2がその行を読み、その後T1がロールバック
を実行すると、T2はコミットされなかった修正を読み込んだことになる。
■ P2(ノンリピータブル・リード):トランザクションT1が行を読み込んだあとにトランザクションT2がその行を修正し、その後再び
T1が同じ行を読み込むと、T1は同じ行を1度目と2度目では異なる値で読み込む。
■ P3(ファントム:トランザクションT1が検索条件を満たす一連の行を読み込んだあとに、トランザクションT2が同じ検索条件を満た
す1つまたは複数の行を挿入し、その後T1が同じ読み込みを繰り返すと、以前は存在しなかった行も取り出される。
====== 引用終わり ========

Phantom readの方は、「あとで挿入された行が見つかってしまう」というところがミソですね。
突然目の前に現れるという意味でPhantom(まぼろし)と名付けたのでしょうけど、しゃれているではないですか。

同等の記述がOracleのマニュアル(Oracle Concepts Release 8.0)にも書いてありました。自分はOracleのパッケージは所有していないのでWeb上にあるものを参照しました。

http://www.qns.com/~quentin/docs/oracle_804_generic/doc/server.804/a58227/ch_intro.htm#3932

以上、参考まで。


[58] Re^4: トランザクションに関連する用語 投稿者:yos 投稿日:99/02/23(Tue) 13:02

yosと申します。

> ずいぶん前にこの手の話を読んだ記憶があるので探したら見つかりました。

大変役に立つ情報をどうもありがとうございます。感激しています。
これでなんとか理解することができました。
近いうちに実験もしてみようと思っています。


[39] 候補キーは Not NULL ですか。 投稿者:グッチ 投稿日:99/02/12(Fri) 14:01

はじめまして。
理論的なことですが、教えてください。
複数の列から構成される候補キーのそれぞれの列は、
Not NULL制約が必要ですか?
列のなかに,NULL値が含まれてもかまわないでしょうか。


[41] Re: 候補キーは Not NULL ですか。 投稿者:きむ 投稿日:99/02/16(Tue) 00:25

> 複数の列から構成される候補キーのそれぞれの列は、
> Not NULL制約が必要ですか?
> 列のなかに,NULL値が含まれてもかまわないでしょうか。

こんにちわ。
候補キーとなる値は一意に識別される値でなければなりませんから、NOT NULL が必要です。


[50] Re^2: 候補キーは Not NULL ですか。 投稿者:グッチ 投稿日:99/02/19(Fri) 10:08

> 候補キーとなる値は一意に識別される値でなければなりませんから、NOT NULL が必要です。

ありがとうございます。

辞書代わりに使えるような参考書に、と思い
「標準SQLガイド 改定第4版」日本語訳 を購入したところ、
候補キーはNull が可能のように読み取れる部分があったものですから、
質問させていただきました。


[36] グループ内の上位3名を選び出したいのですが。 投稿者:白雪姫 投稿日:99/02/09(Tue) 17:06

ACCESSはそこそこに使えるのですが、クエリーではどうしても
解けないのでお教え願いたいのです。
「部署対抗のゴルフ大会のスコア表(テーブル)」があります。
部署・氏名・スコアが並んでいます。(この順で並べ替えてある)
各部の上位3名の合計を計算し団体戦の順位表をレポートにし
たいのですが、上位3名を表示するにはSQL文でどうかくの
でしょうか?表示できればレポートを作れると思うのですが。
本を購入しSELECT.HAVING句か?とあたりをつけましたが、
そこまでしか分かりません。(SQL文使えないので・・・)
宜しくお願いします。


[37] Re: グループ内の上位3名を選び出したいのですが。 投稿者:きむ 投稿日:99/02/09(Tue) 21:03

こんにちわ。

> たいのですが、上位3名を表示するにはSQL文でどうかくの
> でしょうか?

ACCESSでしたら、ズバリこれですね。

http://www.microsoft.com/japan/support/kb/articles/J021/1/52.htm


[38] Re^2: グループ内の上位3名を選び出したいのですが。 投稿者:白雪姫 投稿日:99/02/10(Wed) 14:59

きむ様、早速ありがとうございました。当にACCESSでございます。
すいません。私の説明不足でした。
ゴルフの団体戦の順位を決定するので、各チーム(この場合部署で、
4名編成)毎のスコアの上位順3名です。
つまり各チームから一番成績の悪い選手が切り落とされて、残りの3名
のスコア合計(チーム毎)を計算したいのです。
「上位15レコードのみを抽出」ですと、チームに関係なく、上位者の
ランキングが出てきてしまいます。
SELECT TOP 15...というSQL文ですね。
やはりVBAとか分からないと無理なんでしょうか・・・。


[34] 条件分岐 投稿者:tompira 投稿日:99/02/01(Mon) 18:17

先日も質問させていただいたのですが。

SELECT文で該当するデータが無い場合INSERTで
レコードを追加し、データがあった場合UPDATEで
レコードの変更、更新をするにはどうしたら良いでしょうか?

IF文みたいなのは無いんでしょうか?
宜しくお願いします。


[43] Re: 条件分岐 投稿者:きむ 投稿日:99/02/16(Tue) 00:40

> IF文みたいなのは無いんでしょうか?

一般に純粋なSQL文では条件分岐のようなことはできません。
ただし、独自に拡張してあるものもあるので、それぞれのマニュアル等参照してみて下さい。


[31] 初心者の質問その二 投稿者:JINKISS 投稿日:99/01/27(Wed) 10:27

新たな疑問です
皆さんお暇であれば解答ください
「データベース・トリガー」
とは何ですか?
それと各種の制約は定義後も改変できますか?


[33] Re: 初心者の質問その二 投稿者:きむ 投稿日:99/01/27(Wed) 21:59

> 新たな疑問です
> 皆さんお暇であれば解答ください
> 「データベース・トリガー」
> とは何ですか?
> それと各種の制約は定義後も改変できますか?

トリガとは、ある特定のアクションに対して自動的にストアドプロシージャやSQL文を実行する機能のことです。例えば、社員テーブルにデータが追加された場合に、給与テーブルのデータの値を増やすとか、データが追加されたときにデータベースの一貫性をチェックするなどといった作業をRDBMSで行いたいときに使います。一種のイベントということですね。


[29] 初心者の質問 投稿者:JINKISS 投稿日:99/01/27(Wed) 10:05

はじめまして
私は初めて投稿します
なにぶん初心者の為非礼があるとは思いますが
よろしくお願いします
早速ですが
DISTINCTとは何ですか?
自分で調べていてもALLの反対としかかかれてありませんでした
よろしければ教えていただけませんか?


[32] Re: 初心者の質問 投稿者:きむ 投稿日:99/01/27(Wed) 21:41

> DISTINCTとは何ですか?
> 自分で調べていてもALLの反対としかかかれてありませんでした
> よろしければ教えていただけませんか?

DISTINCTとはALL(全部)の反対、つまり重複したデータを取り除きたいときに使うキーワードです。

SELECT NO FROM TABLE;



NO
-----
1
1
2
3
3

という結果だったら、

SELECT DISTINCT NO FROM TABLE;

というSQL文で

NO
-----
1
2
3

という結果になるということですね。


[27] Error Routine 投稿者:tompira 投稿日:99/01/26(Tue) 20:14

初めて投稿します。
SELECTで該当するデータが無かったとき
エラーとして捕らえて、
別の処理(データの追加など)をさせることができるのでしょうか?
ON ERROR
とかいった命令は無いのでしょうか?
すいませんが、どなたか御存じの方、
教えて下さいませ。


[28] Re: Error Routine 投稿者:旧田文夫 投稿日:99/01/26(Tue) 22:57

> 初めて投稿します。
> SELECTで該当するデータが無かったとき
> エラーとして捕らえて、
> 別の処理(データの追加など)をさせることができるのでしょうか?
> ON ERROR
> とかいった命令は無いのでしょうか?
> すいませんが、どなたか御存じの方、
> 教えて下さいませ。

SELECTの後で作成されたテーブルのレコード数を求めることでデータの有
無がわかるのでは?

また データの数を求めるSQL文を実行すると判ると思います。


[26] SQLの実行の中止(ACCESS上で) 投稿者:旧田文夫 投稿日:99/01/26(Tue) 20:14

ACCESS 95 でODBCを使用しホストのデータをACCESSのテーブルにSQLをDOCMDで実行中に強制的にSQLを中止させる方法を教えてください。 ACCESSでSQLを実行中はACCESSのコマンドボタンが作動しないので困っています。{CTL+ALT+DELでは中止できるのですが
意図的に中止をしたいのですが)


[24] 全角カナを半角カナに変換できるような関数教えてください。 投稿者:Shin 投稿日:99/01/21(Thu) 20:28

題名のとおりです。
全角カナを半角カナに変換できるような関数教えてください。
ありますかね。そんな関数。
もしご存知な方がいらっしゃったら教えてください。


[25] Re: 全角カナを半角カナに変換できるような関数教えてください。 投稿者:きむ 投稿日:99/01/26(Tue) 11:19

> 全角カナを半角カナに変換できるような関数教えてください。
> ありますかね。そんな関数。
> もしご存知な方がいらっしゃったら教えてください。

使用している環境にもよるとは思うのですが。
Translateで変換するというのはどうでしょう。


[14] しつもん 投稿者: 投稿日:99/01/19(Tue) 17:43

テーブルAを全件検索することを前提に、その時にAのある項目をキーに
テーブルBから情報を取得したいのです。Bから情報が取得できなくても、
テーブルAの情報は全件検索したいのです。
これを1文で行いたいのですが無理な話でしょうか?


[18] Re: しつもん 投稿者:きむ 投稿日:99/01/20(Wed) 00:46

> テーブルAを全件検索することを前提に、その時にAのある項目をキーに
> テーブルBから情報を取得したいのです。Bから情報が取得できなくても、
> テーブルAの情報は全件検索したいのです。
> これを1文で行いたいのですが無理な話でしょうか?

サブクエリーを使えば出来そうな気がするのですが、具体的にどのようなことがしたいのでしょうか?
それと、1文でないとすればどうなりますか?


[21] Re^2: しつもん 投稿者: 投稿日:99/01/20(Wed) 09:16

>>テーブルAを全件検索することを前提に、その時にAのある項目をキーに
>>テーブルBから情報を取得したいのです。Bから情報が取得できなくても、
>>テーブルAの情報は全件検索したいのです。
>>これを1文で行いたいのですが無理な話でしょうか?
>
> サブクエリーを使えば出来そうな気がするのですが、具体的にどのようなことがしたいのでしょうか?
> それと、1文でないとすればどうなりますか?
>

具体的に言いますと、テーブルAを全件検索するついでに、
テーブルA内のコード(ユニークキーではない)からテーブルBを
検索して名称を取得したいのです。そして、テーブルBに該当する
レコードが無い場合でも、テーブルAの情報を取得したいのです。
1文にしたい理由は”検索速度を早くしたい”為です。
説明が下手ですいませんでした。理解して頂けたでしょうか。


[22] Re^3: しつもん 投稿者: 投稿日:99/01/20(Wed) 16:21

> >>テーブルAを全件検索することを前提に、その時にAのある項目をキーに
> >>テーブルBから情報を取得したいのです。Bから情報が取得できなくても、
> >>テーブルAの情報は全件検索したいのです。
> >>これを1文で行いたいのですが無理な話でしょうか?
>>
>>サブクエリーを使えば出来そうな気がするのですが、具体的にどのようなことがしたいのでしょうか?
>>それと、1文でないとすればどうなりますか?
>>
>
> 具体的に言いますと、テーブルAを全件検索するついでに、
> テーブルA内のコード(ユニークキーではない)からテーブルBを
> 検索して名称を取得したいのです。そして、テーブルBに該当する
> レコードが無い場合でも、テーブルAの情報を取得したいのです。
> 1文にしたい理由は”検索速度を早くしたい”為です。
> 説明が下手ですいませんでした。理解して頂けたでしょうか。

WHERE句に(+)=を使用することで解決しました。
色々とありがとうございました。


[13] 表の結合について 投稿者:yos 投稿日:99/01/16(Sat) 16:55

yosと申します。

本書の方でちょっと分からないことがあります。

Lesson 6の練習問題 3「表を結合する場合に使うWHERE句では
結合対象と検索条件のどちらを先に指定する必要がありますか?」
で、解答が「結合対象を検索条件より先に指定する必要があり
ます」となっているのですが、これはSQL文としては具体的に
どういう記述がまずくて、どう記述しなければならないのでしょ
うか? 具体的なイメージがつかめませんでした。
よろしくお願いします。


[16] Re: 表の結合について 投稿者:きむ 投稿日:99/01/20(Wed) 00:23

> Lesson 6の練習問題 3「表を結合する場合に使うWHERE句では
> 結合対象と検索条件のどちらを先に指定する必要がありますか?」
> で、解答が「結合対象を検索条件より先に指定する必要があり
> ます」となっているのですが、これはSQL文としては具体的に
> どういう記述がまずくて、どう記述しなければならないのでしょ
> うか? 具体的なイメージがつかめませんでした。
> よろしくお願いします。

上記の問題ですが、恐らく翻訳時の間違い(というより私の監修ミス)です。本来著者が言いたかったことは下記のようになると思われます。

「表を結合する場合、WHERE句では、結合と検索のどちらが先に行われますか?」

上記のように読み替えて御理解願えますでしょうか。
よろしくお願いいたします。


[20] Re^2: 表の結合について 投稿者:yos 投稿日:99/01/20(Wed) 02:38

yosと申します。

> 「表を結合する場合、WHERE句では、結合と検索のどちらが先に行われますか?」
>
> 上記のように読み替えて御理解願えますでしょうか。

ありがとうございます。よく理解できました。

当方最初読んだときには、例えばLesson6の6の問題の解答の
WHERE句は、

WHERE ORDERS.PARTNUM = PART.PARTNUM
AND ORDERED BETWEEN #98/09/01# AND #98/09/30#

のように記述しなければならず(上記はAccess97でのSQL文です)、

WHERE ORDERED BETWEEN #98/09/01# AND #98/09/30#
AND ORDERS.PARTNUM = PART.PARTNUM

のようになっているとダメという意味と思ったのですが、
実際に上記を実行すると両方とも動作するためよくわからなく
なり質問に至りました。おかげさまで疑問が解決しました。

PS.
ところで、Lesson6の6はわざわざ表結合しなくても、例えば

SELECT ORDERED, NAME, PARTNUM, QUANTITY
FROM ORDERS
WHERE ORDERED BETWEEN #98/09/01# AND #98/09/30#;

などで得られるのではないでしょうか?
(表の結合の章の問題だったので、何か表結合しないとならない
理由があるのかずいぶん考えてしまいました)


[23] Re^3: 表の結合について 投稿者:きむ 投稿日:99/01/20(Wed) 23:29

> PS.
> ところで、Lesson6の6はわざわざ表結合しなくても、例えば
>
> SELECT ORDERED, NAME, PARTNUM, QUANTITY
> FROM ORDERS
> WHERE ORDERED BETWEEN #98/09/01# AND #98/09/30#;
>
> などで得られるのではないでしょうか?
> (表の結合の章の問題だったので、何か表結合しないとならない
> 理由があるのかずいぶん考えてしまいました)

あ...確かに。。。
おっしゃる通りでして、結合する必要はないですね。
できれば次に増版したときは、もうちょっとましな問題に変更したいと思います。
時間を取らせて、申し訳ありませんでした。


[17] Re^2: 表の結合について 投稿者:きむ 投稿日:99/01/20(Wed) 00:37

この情報も「誤字脱字間違い情報」に追加致しました。御迷惑お掛けいたしました。


[12] 誤字脱字間違い情報 投稿者:yos 投稿日:99/01/16(Sat) 16:48

yosと申します。はじめまして。
ようやく、「SQLプログラミング入門」をすべて読み終えました。

そこで、読んでいる最中に誤りではないかと思われる箇所を
いくつか発見したのでここに書きたいと思います。
間違いなければ、誤字脱字間違い情報の方に反映して頂けたらと
思います。

---
P.175〜176 / P.330〜331 (練習問題 5, 6)

※ORDERS表のORDERED列のデータを98-XX-XXとしているところと
96-XX-XXとしているところがある。

※練習問題 5において、where句のORDERED列に対する記述が

(問題) where .... between '96-09-01' and '96-09-30'
(解答) where .... like '%09%'

となっているが、これでは条件としての意味が変わってしまうのでは?

P.248 / P.338 (練習問題 2)

(誤) CREATE TABLE NEW_TABLE (
ID NUMERIC
FIELD1 CHAR(40),
(正) CREATE TABLE NEW_TABLE (
ID NUMERIC,
FIELD1 CHAR(40),

※解答では2つの誤りを指摘しているが、最初のID NUMERICの後に
カンマ(,)がないのを含めると3つ誤りがある。

P.265

(誤) ただし、ビューでGROUP BY句を使えば
(正) ただし、ビューでORDER BY句を使えば

P.271

(誤) [IN] CREATE TABLE BILLS1 AS
(正) [IN] CREATE VIEW BILLS1 AS

(誤) [IN] CREATE TABLE BILLS2 AS
(正) [IN] CREATE VIEW BILLS2 AS

P.288

(誤) READ WRITEを指定すると...できるようになります。
(正) READ WRITEを指定すると...できなくなります。


[15] Re: 誤字脱字間違い情報 投稿者:きむ 投稿日:99/01/20(Wed) 00:13

> yosと申します。はじめまして。

はじめまして。
御連絡頂いた、情報ですが「誤字脱字間違い情報」の方に反映させて頂きましたので御参照下さい。本当にありがとう御座います。

だた1点、下記の点は間違いではないと思われます。

> (誤) READ WRITEを指定すると...できるようになります。
> (正) READ WRITEを指定すると...できなくなります。

しかし、本書を読み直したところ、TRANSACTION についての項は少々説明不足でもあると思いましたので、補足事項としてこのページに載せておきました。トップページの「トランザクションについて」を一度見て頂けるようお願いできますでしょうか。

よろしくお願いいたします。


[19] Re^2: 誤字脱字間違い情報 投稿者:yos 投稿日:99/01/20(Wed) 02:05

> しかし、本書を読み直したところ、TRANSACTION についての項は少々説明不足でもあると思いましたので、補足事項としてこのページに載せておきました。トップページの「トランザクションについて」を一度見て頂けるようお願いできますでしょうか。

非常に分かりやすい補足説明をどうもありがとうございます。
おかげさまで自分の誤解を正すことができました。


[7] テーブルのフィールド定義の変更 投稿者:渡辺 投稿日:99/01/05(Tue) 23:12

アクセス等だとフィールドの定義(型、キー、デフォルト値等)を
変えることは、アプリケーション上ビジュアルにできますが、
SQLでこれをするには、どうするのでしょうか。
ALTER TABLE で、DROPとADDだと、そのフィールドのデータが
消えてしまうような気がするのですが。

http://www.teleway.ne.jp/~toh/


[8] Re: テーブルのフィールド定義の変更 投稿者:きむ 投稿日:99/01/06(Wed) 19:27

> SQLでこれをするには、どうするのでしょうか。
> ALTER TABLE で、DROPとADDだと、そのフィールドのデータが
> 消えてしまうような気がするのですが。
>

確かに DROP すれば消えてしまいますよね。

SQLでカラムの属性を変更するには、ANSIなどでは ALTER COLUMN で定義されています。ORACLEの場合は ALTER TABLE で MODIFY オプションを使います。
ただし、この場合でも長さを短くする列では既存のデータが空である必要
がありますね。
いずれにしても、使うDBMSによってやり方は変わってくるかと思います。


[9] Re^2: テーブルのフィールド定義の変更 投稿者:渡辺 投稿日:99/01/06(Wed) 22:17

REありがとうございます。
>
> SQLでカラムの属性を変更するには、ANSIなどでは ALTER COLUMN で定義されています。
よろしければどういう構文になるか教えていただけないでしょうか。
>ORACLEの場合は ALTER TABLE で MODIFY オプションを使います。
> ただし、この場合でも長さを短くする列では既存のデータが空である必要
> がありますね。
> いずれにしても、使うDBMSによってやり方は変わってくるかと思います。
>
interbaseを使おうと思っています。

http://www.teleway.ne.jp/~toh/


[10] Re^3: テーブルのフィールド定義の変更 投稿者:きむ 投稿日:99/01/08(Fri) 20:47

> interbaseを使おうと思っています。

すみません、InterBaseについては詳しくないのでわからないです。
製品のマニュアルやヘルプ等参照してみたら如何でしょうか。
多分、簡単に見つかるかと思います。


[11] Re^4: テーブルのフィールド定義の変更 投稿者:渡辺 投稿日:99/01/15(Fri) 12:53

REありがとうございます。
> すみません、InterBaseについては詳しくないのでわからないです。
> 製品のマニュアルやヘルプ等参照してみたら如何でしょうか。
> 多分、簡単に見つかるかと思います。
ヘルプは見ていたのですが、再度みてみます。ありがとうございました。

http://www.teleway.ne.jp/~toh/


[5] テストです。 投稿者:管理人 投稿日:98/12/16(Wed) 19:06

なんか書いてね。


[6] Re: テストです。 投稿者:管理人 投稿日:98/12/16(Wed) 19:06

> なんか書いてね。

書いたよ。