SQL教えてっ!! lt;3gt;

このエントリーをはてなブックマークに追加
>932
数値型に対してシングルクオートで括ったWhereを書くと、型の不一致が出るDBMSもある。
つか、事前に列の型が分からないってどういう状況やねん?
935デフォルトの名無しさん:03/07/15 16:27
ある日付からある日付までの間に、日曜日が何回あるかを調べるには
SQL文ではどう書けば宜しいのでしょうか?
DBサーバ上でやるなら、
ある日付から1日づつDATEADDし、
ある日付の曜日に対して(DAYNAME=日曜)だったらカウントを
上げある日付までループさせ、カウント値を返すストアドプロシージャ
もしくはファンクションをつくる。

>>935
何週間経ったか、なら、
TRUNC( (ある日付 - ある日付) / 7 )
とかで行けるけどな。(for Oracle)
日曜日が何回、はSQL文だけでは無理ぽ。
FUNCTION作れば?
938935:03/07/15 17:13
>936 >937
ありがとうございます。
やはりSQL文だけでは無理ですか、、、、、。
素直にPHPでスクリプト書きます。
「やはり」ってそんなこと臭わせてないかったじゃん。
TRUNC(終了日 - NEXT_DAY(開始日 - 1, '日') / 7)

('日' は、NLS_PARAMETER によっては 'Sun')
941940:03/07/15 17:43
あ、最後に +1 忘れた。
>>940
TRUNC使ってるから、Oracleだな?
NEXT_DAYって何?
943935:03/07/15 19:27
> 「やはり」ってそんなこと臭わせてないかったじゃん。

うっ、するどい。
944932:03/07/16 00:38
>934
ありがとうございました。
やっぱり、DBMSによっては不一致になるものもあるんですね。

ちなみに、状況は汎用で使うDBアクセス系ツールの作成中です。
*そうそう手抜きはできないか……。
945デフォルトの名無しさん:03/07/17 12:15
至急教えてください!
SQL SERVER 2000でTABLE1に
ユーザID  分類1  分類2   日付
M0010   AAA    BBB    2003/07/17 15:00
M0010   BBB    CCC    2003/07/17 15:50
M0020   AAA    BBB    2003/07/18 08:00
M0020   BBB    CCC    2003/07/17 10:50
M0050   FFF    BBB    2003/07/18 08:00
M0050   WWW    CCC    2003/07/17 10:50
M0050   WWW    CCC    2003/07/17 12:50

となっていた場合

ユーザID  分類1  分類2   日付
M0010   AAA    BBB    2003/07/17 15:00
M0020   AAA    BBB    2003/07/18 08:00
M0050   WWW    CCC    2003/07/17 12:50

と、データが出現する順番で各ユーザIDの先頭レコードを返すように
クエリを作りたいのですが、こんなことできますでしょうか?
>>945
出現する順番がわからない
日付順?
OSはXPなんですが、
TTSSH、TeraTerm Pro をインストールして、接続までできたんですが、
文字が全く入力出来ないんです。
キーボードの設定が悪いのでしょうか?
どうすれば文字が打てるようになるのか教えて下さい。
948デフォルトの名無しさん:03/07/17 14:14
>>946
そうです。日付時間の若い順です。
関数があればベストなのですが。できないですかね。

>>945
SELECT ユーザID,MIN(日付)
FROM hoge
GROUP BY ユーザID.

分類1と分類2も必要なら結合しる。
950デフォルトの名無しさん:03/07/17 16:32
オラクルで言う ”Select A || B From C”のようにAとBをつなげて出力したいのですが、
SqlServerではどのように表現すればいいのか教えてください。
お願いします。
&っしょ
952デフォルトの名無しさん:03/07/17 19:23
>>949
これではだめなのです。
SQL SERVER 2000でTABLE1に
ユーザID  分類1  分類2   日付
M0010   AAA    BBB    2003/07/17 15:00
M0010   BBB    CCC    2003/07/17 15:50
M0020   AAA    BBB    2003/07/18 08:00
M0020   BBB    CCC    2003/07/17 10:50
M0050   FFF    BBB    2003/07/18 08:00
M0050   WWW    CCC    2003/07/17 10:50
M0050   WWW    CCC    2003/07/17 12:50

これ自体もSQLクエリの値でORDER BYしております。
分類1.2を含めたらGROUP BYできないのでは?
>>952
未検証。
同一ユーザに同じ日付が複数合ったら知らん。
SELECT h1.* FROM hoge h1
INNER JOIN(
  SELECT ユーザID,MIN(日付) AS 日付
  FROM hoge
  GROUP BY ユーザID) AS h2
  ON h1.ユーザID = h2.ユーザID AND h1.日付 = h2.日付
ORDER BY h1.ユーザID
954デフォルトの名無しさん:03/07/18 14:00
select文だと複数のテーブルにアクセスできますが、
updateやinsertはどうですか?
一度の複数のテーブルのレコードを変更できたりしますか?
自分でやってみたらダメだったんですが。
>>955
だめです
956デフォルトの名無しさん:03/07/18 15:02
>>956
だめです
>>957
だめです
958954:03/07/18 15:46
なにがだめなんですか!
>>959
ワロタ
960デフォルトの名無しさん:03/07/18 16:40
よくある30件づつってゆーのは
SQLで指定しているのが普通でつか_?
>>960
Postgresなら、LIMIT,OFFSETがあるから、SQLで指定するのって楽勝なんだけど、
オラクルとかって、どうするんだろうな。
>>961
ROWNUMで無理やり
963デフォルトの名無しさん:03/07/18 20:24
Oracleです。下のSQL文、もっとシンプルに書けないでしょうか?
何がやりたいかと言えば、TBLからCD毎に件数の一番多いVLを取得、です。よろしくお願いします。

SELECT a.CD,a.VL FROM
(SELECT CD,VL,COUNT(VL) CNT FROM TBL GROUP BY CD,VL) a,
(SELECT CD,MAX(CNT) MCNT FROM
(SELECT CD,VL,COUNT(VL) CNT FROM TBL GROUP BY CD,VL)
GROUP BY CD) b
WHERE a.CD = b.CD AND a.CNT = b.MCNT
964932:03/07/20 17:20
データベースの中にファイルの中味をそのまま入れる方法はないでしょうか?
#SQLでなければ、できるようなフリーソフトを教えていただいても
#ありがたいのですが
>>964
ある。
が、DBMSにより方法は異なる。
おまいさんの使ってるDBはなんじゃらほい。
>>964
BLOBでググれ
967964:03/07/21 17:25
Oracle(8以降)とSQL server です。

BLOB、ぐぐってみましたが、うまくヒットしません。
#うー、キーワードの組み合わせが悪いのだろうか。溺れそうだ。
SQL Server 使ってんなら、BooksOnLine で
「BLOB」か「image データ型」で調べてみなよ。

っていうか google でも、ちゃんと該当するよ。
あんた調べる気ないんだろ?
969966:03/07/22 00:07
>>964
もうサポートに聞け
サンプルコードぐらい出るだろ(w
質問です。

レシートに記載されてる項目を表にした。
<表1>
レシート  日付   時間   商品名   単価  数量  小計  税金  預かり金 お釣
番号
1 2003.6.17 11:30 ホットケーキ  300 1 600 30 1000 270
チーズケーキ 300 1
2 2003.6.17 12:01 アイスコーヒー 300    1 1400 70 2000 530
ホットコーヒー 300 1
ハムトースト 400 1
                 シフォンケーキ 400 1

●各レシートは、レシート番号と日付により一意に決まるので、{レシート番号、日付}は
  候補キーである。他に候補キーはないので、これを主キーとした。
●税金は、小計*0.05で計算する。言い換えると、税金は小計に関数従属する。
●関数従属は他にもある。
あ、失敗しました。
質問です。

レシートに記載されてる項目を表にした。
<表1>
レシート  日付   時間   商品名   単価  数量  小計  税金  預かり金 お釣
番号
1 2003.6.17 11:30 ホットコーヒー 300 1 600 30 1000 270
チーズケーキ 300 1
2 2003.6.17 12:01 アイスティー 300 1 1400 70 2000 530
ホットコーヒー 300 1
ハムトースト 400 1
シフォンケーキ 400 1
●各レシートは、レシート番号と日付により一意に決まるので、{レシート番号、日付}は
  候補キーである。他に候補キーはないので、これを主キーとした。
●税金は、小計*0.05で計算する。言い換えると、税金は小計に関数従属する。
●関数従属は他にもある。
質問です。

レシートに記載されてる項目を表にした。
<表1>
レシート  日付   時間   商品名    単価  数量  小計  税金  預かり金 お釣
番号
1 2003.6.17 11:30 ホットコーヒー 300 1 600 30 1000 270
チーズケーキ 300 1
2 2003.6.17 12:01 アイスティー 300 1 1400 70 2000 530
ホットコーヒー 300 1
ハムトースト 400 1
シフォンケーキ 400 1
●各レシートは、レシート番号と日付により一意に決まるので、{レシート番号、日付}は
  候補キーである。他に候補キーはないので、これを主キーとした。
●税金は、小計*0.05で計算する。言い換えると、税金は小計に関数従属する。
●関数従属は他にもある。
何度もすみません。
位置がずれていますが、スペースで何とかわかってもらえますでしょうか・・・。
レシート番号、日付、時間、小計、税金、預かり金、お釣りのデータが入ってるのは、
1行目と三行目だけです。

上の続きなのですが、
「問題1」
表1を以下の表2と表3に分解した。
(1)表2、3の主キーを示せ。
(2)この分解は、無損欠結合分解か?
(3)表2、表3は第一正規形か?

<表2>
レシート番号   日付     商品名    単価   数量
   1 2003-6-17 ホットコーヒー  300 1
1 2003-6-17 チーズケーキ 300 1
2 2003-6-17 ジンジャエール 300   1
2 2003-6-17 ホットコーヒー 300 1
2 2003-6-17 ハムトースト 400 1
2 2003-6-17 シフォンケーキ 400 1

<表3>
レシート番号   日付   時間   小計  税金  預かり金  お釣り
   1 2003.6.17 11:30 600 30 1000 270
2 2003.6.17 12:01 1400 70 2000 530

<問題2>表3は、第三正規形でない。その理由を示せ。

この問題の答えを教えて下さい。お願いします。
(上の二つの表もずれていたらすみません)

質問です。

レシートに記載されてる項目を表にした。
<表1>
レシート  日付   時間   商品名    単価  数量  小計  税金  預かり金 お釣
番号
1 2003.6.17 11:30 ホットコーヒー 300 1 600 30 1000 270
チーズケーキ 300 1
2 2003.6.17 12:01 アイスティー 300 1 1400 70 2000 530
ホットコーヒー 300 1
ハムトースト 400 1
シフォンケーキ 400 1
●各レシートは、レシート番号と日付により一意に決まるので、{レシート番号、日付}は
  候補キーである。他に候補キーはないので、これを主キーとした。
●税金は、小計*0.05で計算する。言い換えると、税金は小計に関数従属する。
●関数従属は他にもある。
976デフォルトの名無しさん:03/07/25 01:28
上げておく
もうちょっとで次スレっすね。
977デフォルトの名無しさん:03/07/25 05:40
>>974
問題1
(1)
表2 レシート番号 日付 商品名
表3 レシート番号 日付
(2)
情報無損失分解である。
(3)
表2 第一正規形(繰り返し項目はないが部分キーである「商品名」に「単価」が部分関数従属しているため)
表3 第二正規形(繰り返し項目はない。部分関数従属していない。「お釣」が「小計、税金、預かり金」に対して推移関数従属しているため)

問題2
問題1(2)表3の解説によるため
978デフォルトの名無しさん:03/07/25 05:44
>>977
やべ間違えた。思いっきり
> ●税金は、小計*0.05で計算する。言い換えると、税金は小計に関数従属する。
てかいてあるじゃん。

問題1
(3)
表3 第二正規形(繰り返し項目はない。部分関数従属していない。「税金」が「小計」に対して推移関数従属しているため)
内税/非課税商品には対応しなくていいの?
>>979
いいのよ〜。
●税金は、小計*0.05で計算する。言い換えると、税金は小計に関数従属する。
これ↑が仕様だ。

 早く、次スレ立てろよ?

>>981
ここじゃだめ?w

SQL質疑応答スレ
http://pc2.2ch.net/test/read.cgi/db/1056973582/
だめ。