SQL教えて〜!! <2>
レス数が1000を超えています。これ以上書き込みはできません。
0001デフォルトの名無しさん
NGNG前スレ
SQL教えて〜!!
http://pc3.2ch.net/test/read.cgi/tech/1000116969/l50
関連スレは>>2-3
00021
NGNGhttp://pc3.2ch.net/test/read.cgi/tech/1020158297/l50
【ノウ】DBアプリ開発ノウハウ【ハウ】
http://pc3.2ch.net/test/read.cgi/tech/1015807409/l50
★★★ SQLサーバ VS オラクル ★★★
http://pc3.2ch.net/test/read.cgi/tech/1008908462/l50
oracle質問
http://pc3.2ch.net/test/read.cgi/tech/1010400855/l50
Access使い集合!
http://pc3.2ch.net/test/read.cgi/tech/1005078204/l50
MySQLってどうよ
http://pc3.2ch.net/test/read.cgi/tech/1008316065/l50
InterBaseを使いこなすスレ
http://pc3.2ch.net/test/read.cgi/tech/1015250429/l50
00031
NGNGPostgreSQL
http://pc.2ch.net/test/read.cgi/php/989375812/l50
PHP + PostgreSQL
http://pc.2ch.net/test/read.cgi/php/983128806/l50
PHP + MySQL
http://pc.2ch.net/test/read.cgi/php/983250751/l50
MySQL vs PostgreSQL
http://pc.2ch.net/test/read.cgi/php/989341364/l50
0004デフォルトの名無しさん
NGNG0005デフォルトの名無しさん
NGNGPostgreSQL or MySQL
http://pc.2ch.net/test/read.cgi/unix/955533785/
0006デフォルトの名無しさん
NGNG質問スレは別にあった方がいいと思う。
0007デフォルトの名無しさん
NGNGSQLの集計関数でGROUP BY
した時にグループ毎の小計を出したいのです。
MSSQLサーバなら
COMPUTEを始めとしていろいろ出来ますが
汎用的なステートメントはあるのでしょうか?
特にDB2で実現したいと思っています。
アドバイスよろしくお願いします。
0008デフォルトの名無しさん
NGNGselect grp_name, sum(column_name)
from table_name
group by grp_name
とかじゃなくて?
0009デフォルトの名無しさん
NGNGレスありがとうございます。
説明が足りなくて申し訳ありません。
ただ、私が期待している結果は集計行だけではなく、
例えば
prefect でグループ化をし
prefect name salary
-----------------------
tokyo aa 120
tokyo bb 60
tokyo cc 130
tokyo 310 ←ここに小計をいれたい
tiba dd 30
tiba ee 110
tiba 11 30
tiba 170←ここに小計をいれたい
....
という感じにしたいのです。
引き続きアドバイスよろしくお願いします。
0010apholist
NGNGそんなことできるDBがあるのね。しらんかった。
個人的には集計関数使うよりはデータだけ引っ張ってきて
プログラムの方で集計するほうが好みなんだけど。
アクセス数によるけど、DB側の処理は軽いほうがいいと思う。
0011デフォルトの名無しさん
NGNGrollupとかcubeですね。使えるみたい。
http://www-6.ibm.com/jp/software/data/developer/library/manual/db2online/db2y0/frame3.htm#db2y045
0012デフォルトの名無しさん
NGNG0013デフォルトの名無しさん
NGNGDATE ? '1999-01'
0014デフォルトの名無しさん
NGNG使ってるRDBMSによる。
DATE < '1999-02-01' and DATE >= '1999-01-01'
でRDBMSによっては動くかもしれない。またDATEから組み込み関数を
使って年と月を取り出して比較したりいろいろ方法はあるが、組み込み
関数を使うとインデックスが効かなくなる場合もあるので注意。
001513
NGNGありがとSUN
やっぱり日付こみで指定しないと駄目か
0016デフォルトの名無しさん
NGNG>関数を使うとインデックスが効かなくなる場合もあるので注意。
そーそーこの間これでパフォーマンスがぼろぼろだったです。
SQL厨ですが、とりあえず逝って来ます。
0017デフォルトの名無しさん
NGNG九月の頭から業務でSQLを使用することになりました。
全くと言っていいほど知識がありません。。。
SQLはどのくらい難しいのでしょうか?
0018デフォルトの名無しさん
NGNG素晴らしく漠然とした質問だなオイ!
0019デフォルトの名無しさん
NGNGべつにいいじゃん。そんなことより
激しくすれ違い
0020デフォルトの名無しさん
NGNGSQL Server7.0/2000 を使用しています。
こういうことはできますか?
テーブル A
ID Name1
----------
1 a
2 b
3 c
テーブル B
ID Name2
----------
2 x
3 y
4 z
このとき、以下のように結合したいのです。
ID Name1 Name2
------------------
1 a <NULL>
2 b x
3 c y
4 <NULL> z
ちなみに
select *
from A full join B
on A.ID=B.ID
としたら、
ID Name1 ID Name2
----------------------------
1 a <NULL> <NULL>
2 b 2 x
3 c 3 y
<NULL> <NULL> 4 z
となってしまうのですが、ID を1列にまとめたいのです。
何かよい方法はありますか?
0021デフォルトの名無しさん
NGNGselect NVL(A.ID, B.ID), Name1, Name2
from A full join B
on A.ID = B.ID
でできないかな?
NVL()があるかどうかわからないので一応関数の仕様。
引数1がNULLだったら引数2の値を返す関数。
0022デフォルトの名無しさん
NGNG俺は20じゃ無いがあんたは紙だとおもふ
select coalesce(tab1.ID,tab2.ID) id,name1,name2
from tab1 full outer join tab2 on tab1.ID = tab2.ID
order by id
で、できますた。
SQL Server2000で確認済み
NVLって事はオラクルだとおもうけど、それって
9iじゃないと出来ないよね。8i以前はどうしていたんだろう・・・・
0023デフォルトの名無しさん
NGNGselect ID, max(name1), max(name2)
from (
select ID, name1, null name2 from A
union all
select ID, null name1, name2 from B
)
group by ID
full outer joinの実行計画ってどうなるんだろ?
0025デフォルトの名無しさん
NGNG標準はcoalesceだから特に理由がなければそっちを使っとけ
0026デフォルトの名無しさん
NGNGfrom table1
しかしこれはエラーです。(Left 関数の「Code1」の箇所で)
Code2 として Code1 の左二桁をとりたいのだが、
どうすればよいのか??
なんども (CASE の複雑な式) を書かないとだめでしょうか。
(SQL Server2000 使用です)
0027デフォルトの名無しさん
NGNGhttp://jbbs.shitaraba.com/computer/bbs/read.cgi?BBS=2784&KEY=1029503890&LAST=100
0028デフォルトの名無しさん
NGNG0029デフォルトの名無しさん
NGNG本当に何度も書く、かつ汎用的ならユーザー定義関数を使うと吉。
003026
NGNGども!
ユーザー関数考えて見ます。
0031デフォルトの名無しさん
NGNGその通りです
あと、From句のテーブルを書く順番も結構、速度が変わってくるので
取得データ・テーブル構成等を考えて指定してみてください
0032デフォルトの名無しさん
NGNGまたいい教材があったら教えてください。
0033別スレに誤爆していました(涙
NGNGSQLServerは使えませんでした。
SQLServer用の同様の便利なソフトってどんなのがあるのでしょうか?
0034デフォルトの名無しさん
NGNG標準のGUIツール(エンタープライズマネジャ、クエリーアナライザ)では
ダメですか?
仕事の便宜を考えたら、DB設計書 ←→ T-SQL
変換のスクリプトとかは作っておくと便利だと思います。
たぶん、ベンダー製品にもそうした機能のアプリはありそうです。
DBマガジンあたりを読んでみてはどうでしょうか。
0035デフォルトの名無しさん
NGNG値を得られないのですが(SQLクエリを直接実行してみるとうまくいきます)
Dumpしてみると
Dumping Data for connection: 2
と出ます。考えられる原因を教えてください。
003621
NGNG漏れはSQL厨だよー。
8i以前はDECODE(data, compression1, result1, [compression2, result2, ..., compressionN, resultN], default)ってのがあるよ。
dataがcompression1ならresult1を、
compression2ならresult2を、
compressionNならresultNを、
それ以外はdefaultを返す。
>22を書き換えると
select decode(tab1.ID, NULL, tab2.ID, tab1.ID) id,name1,name2
になる。
DECODEが長くなるならストアドファンクションにしたほうが吉。
003722
NGNGそんだけ知っててSQL鯖専門かいな
俺はどっちかといえば、Ora専門のつもりだったんだが・・・・
とはいっても、DBA関係から入ってOraで開発やりてーって、
上司に交渉中の身なんだがな。
>>23のもちょっと考えたあとに納得できて
ふぅーんと思っていたが、>>36のはより直感的で
漏れのような超甘にはピッタリだつだよ
ということで、俺の中であんたは髪決定!!!
あぁ、入社5年目開発未経験なバカでも
Oraで開発やらせてくれる会社ないかなぁ。。。
0038デフォルトの名無しさん
NGNGshopid shopname
001東京
002茨城
003埼玉
Table B
No shopid1 shopid2 shopid3
1 001 002 0003
2 001 0002
3 001 0002
出力
No shopid1 shopname shopid2 shopname shopid3 shopname
1 001 東京 002 茨城 003 埼玉
2 - - 001 東京 002 茨城
3 001 東京 - - 002 茨城
TableAとTableBから、
こんな表を出力したいのですがうまくいきません。
どうすればよいでしょうか?
0039デフォルトの名無しさん
NGNG0040デフォルトの名無しさん
NGNGちなみにこんな感じで考えますた。
select b.shopid1,a.shopname,b.shopid2,a.shopname,b.shopid3,a.shopname
from b left outer join a on
b.shopid1=a.shopid or b.shopid2=a.shopid or b.shopid3=a.shopid
結果はこうなりますた。
No shopid1 shopname shopid2 shopname shopid3 shopname
1 001 東京 002 東京 003 東京
1 001 茨城 002 茨城 003 茨城
1 001 埼玉 002 埼玉 003 埼玉
2 - 東京 001 東京 002 東京
2 - 茨城 001 茨城 002 茨城
うーん。1回では無理?
004121
NGNGありがとん。
SQL鯖専門ではなくて、Sybaseもやったことあるです。
でも今はOraで開発。
>38
試してないけど多分これで。
select No,
shopid1, DECODE(shopid1, NULL, '--', A.shopname),
shopid2, DECODE(shopid2, NULL, '--', B.shopname),
shopid3, DECODE(shopid3, NULL, '--', C.shopname)
from Table_B,
Table_A A,
Table_A B,
Table_A C
where shopid1 = A.shopid
and shopid2 = B.shopid
and shopid3 = C.shopid
0042デフォルトの名無しさん
NGNG外部結合まではいいが、
あとはエイリアスを使うべし。
SELECT B.No,
B.shopid1,A1.shopname,
B.shopid2,A2.shopname,
B.shopid3,A3.shopname
FROM ( (B LEFT OUTER JOIN A as A1 ON B.shopid1 = A1.shopid)
LEFT OUTER JOIN A as A2 ON B.shopid2 = A2.shopid )
LEFT OUTER JOIN A as A3 ON B.shopid3 = A3.shopid
SQL92形式は結合評価順序を指定できても
ちょっと面倒だ。
0043デフォルトの名無しさん
NGNGありが�d。
うまくいきました。
0044デフォルトの名無しさん
NGNGData >= ○ And Data <= ●
パフォーマンスがいいのはどっちだ?
0045デフォルトの名無しさん
NGNG一般的にはBETWEENと思われ
0047デフォルトの名無しさん
NGNGData >= ○ And Data <= ●
以上・以下の比較を入れると遅くなります
例えば
Data >= 2 And Data <= 5 の場合、
Data > 3 And Data < 6 としたほうが速いです
004844
NGNG0049デフォルトの名無しさん
NGNGわざわざBETWEENなんてものが用意されてる以上、
その処理も最適化されている可能性が高いだろうという推論
実測値を計ったわけじゃないので違ったらスマソ
005044
NGNGスマソ。
仕事しながらだとタイミングが合わん。
Data Between ○ And ●
Data > ○-1 And Data < ●+1
だとパフォーマンスがいいのはどっちなんでしょ?同等!?
0051デフォルトの名無しさん
NGNG自分で時間はかってみりゃいいじゃない
0053デフォルトの名無しさん
NGNG理由もくそも、まず計ってみたのかよ!?
大体DBなに使ってるかも書いてないし情報不足すぎ。
005447
NGNG>>53さんのいうようにDBに何を使っているのかがわからないんですが、
Oracleなら Set Timing on(off) とかで実行時間が測れたような気がするが・・・・
005544
NGNGすまんすまん。
DBは SQL Server だ。
時間計ってみた。
declare @a datetime
set @a = GetDate()
select *
from ◎
where ○ > '2000/03/31' And ○ < '2003/04/01'
print DateDiff(millisecond, GetDate(), @a)
set @a = GetDate()
select *
from ◎
where ○ Between '2000/04/01' And '2003/03/31'
print DateDiff(millisecond, GetDate(), @a)
こんな感じで。
Between の方が速いらしい。
上司に理由を聞かれるけど分からんのじゃ〜
005644
NGNG○SQL Server2000
おいどんもう駄目ば〜い。
0057デフォルトの名無しさん
NGNGSQLサバなら、クエリアナライザで実行プランを表示シル!
オラクルなら、EXPLAIN PLANとかトレース&TOPROF。
SET TIMING ONだと、画面に表示をしている時間も含まれちゃうよ。
しかも、(INDEXが使用されているという前提だとして)あとから実行した方が
バッファ上のデータを引っ張ってくるからそっちの方が時間的に
早くなる可能性が大。
0058デフォルトの名無しさん
NGNGうむ、俺も後から実行したほうはキャッシングのおかげで速くなってる
だけだと思う。少なくとも2回は実行しないとわからんね。
005957
NGNG正 TKPROF
でもう一つ気になったことをついでに。
今時のオプティマイザなら、それくらい等価に処理してくれるような気がするが・・・
0060ペーパープラチナ
NGNGパッチあてないと入ってないのね。TKPROF。
自宅で試して、「え?間違った?」とか一人焦った。
0061デフォルトの名無しさん
NGNGこんな表があって
TABLE A
CD1 CD2 DATE1 DATE2
1 a 20020101 20020202
1 a 20020101 20020831
2 a 20020101 20020531
3 a 20020101 20020930
3 b null null
CD1とCD2をグループ化して今日の日付にマッチする
データをカウントして出したいんですけど悩んでおります。
1 a 1
2 a 0
3 a 1
3 b 0
以下、考えたのはダメでした
1.
select cd1,cd2,count(*)
from A
where current date between date1 and date2
group by cd1,cd2
2.
select cd1,cd2,
(select count (*) from wr3_tenji_t where current date1 and date2 )
from A group by cd1,cd2
0063デフォルトの名無しさん
NGNGスペースなのは間違いですよね?)がDATE1とDATE2の間にあるという
条件なら、
select cd1,cd2,count(*)
from A
where date1 <= current_date and date2 >= current_date
group by cd1,cd2
でいいのでは?
006461
NGNGありがとうございます。
しかし、それでは1.のSQLと同じなので
検索結果は0件になってしまいます。
DB2を使ってるのですが、"current date"で
現在の日時を持ってきますです。
006561
NGNGselect b.cd1,b.cd2,
case when c.cnt is null then 0 else c.cnt end
from (select cd1,cd2 from a group by cd1,cd2) as b
left outer join
(select cd1,cd2,count(*) as cnt
from a where current date between date1 and date2) as b
on a.cd1=b.cd1 and a.cd2=b.cd2
で逝きました。
皆さまありがとうございました。
006744
NGNG□ Between ○ And ● が
□ >= ○ And □ <=● に置き換わってる!
むぅ。
Between と >= <= は同等ってことか?
0068デフォルトの名無しさん
NGNG下のほうが早いのかもね
0069デフォルトの名無しさん
NGNGもともと論理的に同等なのはわかってますよね? 問題は物理的にどうか、という
ことだったので予想通りですよね。in句がorに展開されるのと同様、Syntax
Sugarみたいなものなんでしょうね。
>>68
解釈にかかる時間はほとんど考えなくていいでしょう。
007057
NGNG今回の場合は、クエリテキスト部分で十分だろう。
自分が>>67で書いているように、内部ではbetweenと>= <=が等価に
実行されていることがわかるので、早さはほとんど変わらないということになる。
完全にイコールとは俺の知識では言い切れないが。。。。。
で、ちょっと補足。
クエリアナライザの実行プランは実行したSQL文が
サーバー内部でどのように処理されているかがわかる。
INDEXが使用されているのか、テーブルのフルスキャンなのか、
どのインデックスが使用されているのかなど・・・
また、それぞれの作業がSQL文の結果を返すまでの
全作業量に対してどの程度の割合を占めているのかがわかる。
なので、パフォーマンスを上げたいSQL文があった場合に
どの部分にコストがかかっているかがわかるのでそれを
どうにか解消してあげればSQL文のパフォーマンスがあがることになる。
そのほかにもset statistics io onコマンドが有効だと思う。
これは、実行されたSQL文においてメモリからと
ディスクからの読み込み量(ブロック数)がわかる。
なので、色々な条件でSQL文を書いてみた場合、
それぞれ違ったindexを使用していて、どれが最適か判断に迷う場合は
これで読み込みブロック数が少ない物がパフォーマンスが良いと判断できる。
ここら辺のことは、ブックスオンライン(BOL)の
データベースのパフォーマンスの最適化 − クエリのチューニング(←SQL2000の場合)
あたりを読むともっと詳しいことがわかるだろう。
#長文スマソ
0071SQL
NGNGIS NUMBERみたいなのです。
0072デフォルトの名無しさん
NGNG文字列操作でやりくりしかなさげだ。
translate(str, ' 0123456789', ' ') is null
とかなんとか。符号とか、小数点とか面倒だなぁ。
0073デフォルトの名無しさん
NGNGSQL文はどれぐらい長い文字まで使えるのでしょうか?
環境
MSSQLServer2000
0074デフォルトの名無しさん
NGNG0075デフォルトの名無しさん
NGNGおまえがいらない( ´_ゝ`)プ
0076デフォルトの名無しさん
NGNG0078SQL
NGNGSELECT code FROM TEST WHERE translate(ltrim(rtrim(code)), ' 0123456789', ' ') is null;
こんな感じです。
0079デフォルトの名無しさん
NGNGTYP=1の時はカラムA、カラムB、カラムC
TYP=2の時はカラムA、カラムB、カラムD
とか。
やり方ご教授ください
0080デフォルトの名無しさん
NGNGorder by a, b, decode(typ, 1, c, 2, d, null)
0081デフォルトの名無しさん
NGNGありがとうございます、助かりました。
0082デフォルトの名無しさん
NGNG例えば
・名前(varchar,50)
・日付A(varchar,5)
・日数A(int)
こんな感じのテーブルがあるとします。データは
太郎,08/29,3
次郎,08/25,2
三郎,08/26,0
花子,08/28,3
四郎,08/27,1
こんな感じです。
日数Aってのは、日付Aの何日前にひっかかるようにする?ってな感じの項目です。
例えば今日、抽出処理を行うとすると、太郎と三郎と四郎がHITしたいんです。
で、本日引っかかる人は誰?VIEWみたいなのを作りたいんですけど
どういう風にSQLを書けば良いか必死で考えてるんですけど、わかんなくて...
もしわかられる方おられましたら教えてください。
P.S.
日付Aをyyyy/mm/ddの日付型に出来ないの?とか日数Aは日数じゃなくて日付にすれば?
とかは仕様上出来ないんです..
0083デフォルトの名無しさん
NGNGn=日数A
日付関数をリファレンスで調べれば後は自力で逝けると思う。
0084デフォルトの名無しさん
NGNG1.日付をオラクルでいうところのTO_DATE見たいな、文字列→日付型関数を使って変換する
2.日付型に変換した物から、日数分だけ引いた日付が今日(or基準日)と同じデータを求める
select * from table
where (TO_DATE(日付A) - 日数A) = 今日(or基準日)
#パフォーマンスは無視
#文字列の日付Aを日付型に変換するのは、月またぎなどを考慮するため
#上記SQL文はORACLEでも実行できません(w
0085SQL
NGNGあるselectの結果をそのまま参照元(From)として
使うことはできるのでしょうか?
イメージ的には
select f1,sum(f2)
from (select f1,sum(f2) from tableX group by xx)
group by f1
のような感じなのですが・・・
そもそも、可能なのかどうかもわかっておりません。
申し訳ありませんが、よろしくお願いします。
008612M初心者
NGNGできますよ。
サブクエリとか副問い合わせとか言われるやつですね。
ちなみに、上記のSQLだと
select A.f1,A.c1 from (select f1,sum(f2) as c1 from tableX group by xx) as A
group by A.f1...
とカラムやテーブルの別名を使用する必要があるかもしれませんね。
外側のgroup by こんなんで大丈夫だっけ?
0087SQL
NGNGfrom (****) as A とすることを知りませんでした。
素早いご回答、感謝いたします!m(__)m
0088デフォルトの名無しさん
NGNG逆の考え方ならできた。
今日の日付に日数Aを足す(日付A = 今日(or基準日)+ 日数A)で。
mm/ddを日付型にconvertできんかったんで、苦肉の策。
select * from table where convert(varchar(5),DATEADD(day,日数A,getdate()),1) = 日付A
SQLserver6.5で確認、多分SQLserver2000でもいくと思う。
0089デフォルトの名無しさん
NGNG逆の考え方は良い方法だと思うけど、保守するときは常に逆に考えないといけないから面倒かも。
そうそう。DATEADDにマイナスを指定できない?
0090デフォルトの名無しさん
NGNGAccessですらDateAddにマイナス指定できるんだから、出来ないわけ無いと思うけど…。
テストできる環境あるんなら試してみたら?
009184
NGNG万が一dateaddにマイナスの引数使えなかったら
datediffというのがあるみたいよ。
日付A - 今日(or基準日) = 日数A
な条件でいけそうな感じ。
というか、
> mm/ddを日付型にconvertできんかったんで、苦肉の策。
という文からすると、やっぱり月またぎとかでやばいことになるんじゃないの?
しらべてないけど、日付型に変換できなかったということは
文字列かなんかとして扱ってるんでしょ?
009289
NGNGスマソ。環境ないのでテストできません。
今はOracle業務。
dateaddにマイナスが指定できるのでは? と思ったのは、
SQLの日付関数って大概はマイナス指定できるからです。
009382
NGNG言われるとおり、[日付A]は文字列で持ってるので
Date型にコンバートやDateAddが使えないため
88さんの方法の今日の日付の方に[日数A]を足して
それと[日付A]を同じ形にして(mm/dd)比較する感じで
上手く行きました。
009488
NGNG82さんは解決されたみたいだけど、一応。
ちなみにDATEADDは、マイナス行けます、今試しました。
日付Aが日付型なら、DATEADDでもDATEDIFFでも自由自在だったんですが。
っつか、to_dateみたいに、わりと何でも日付型に変換してくれる便利な関数は、
実は他のDBには無いっすな、ORACLEとSQLSererとUDBしか見てないけど。
0095デフォルトの名無しさん
NGNGOracleはTO_DATEありまっせ。
0096デフォルトの名無しさん
NGNGOracleの話かと思ってたけど違うの?
0097SQL初心者
NGNGどなたか教えて下さい。
Pro*CでWhereの検索条件で直接、文字列と比較するのではなくて
プログラム内の変数と比較したい場合はどうするのでしょうか?
*date = "20020901";
の場合、where DATE = date でOKなんでしょうか?
(DATEはデータベースの項目でCHARで定義)
あと、データベースで時刻(time)がCHARで宣言されていても time > 113030
というように比較できるのでしょうか?
* time -> HHMMSS 113030->11時30分30秒
SQL初めてでここら辺に疑問を感じました。
0098デフォルトの名無しさん
NGNG両方ともDATE型に変換して比較
where to_date(DATE,'YYYYMMDD')) = to_date( :date, 'YYYYMMDD' )
文字列のまま比較してもOKだけど、日付に関係ない値が入ってないことが
前提条件。
始めてだったらOTN(Oracle Tecnology Network)行って
マニュアル取ってくるのが吉。
0099SQL初心者
NGNG早速のレス感謝です。
dateの前に:がついていますが、これが変数を指すのでしょうか?
0100デフォルトの名無しさん
NGNGそうだよ。
Cの変数をSQLの中で使うときには:(コロン)をつける。
0101デフォルトの名無しさん
NGNG「バインド変数」でマニュアル漁るが吉。
0102デフォルトの名無しさん
NGNGOracleではバインド変数って言うんだな
知らんかった
0103SQL初心者
NGNGどうもありがとうございました。
0104デフォルトの名無しさん
NGNGPro*Cじゃホスト変数って言うと思ったが…。
0105101
NGNGOCIをダイレクトに叩く場合に使うのがバインド変数で、
埋め込みSQLとかSQL文で使うのをホスト変数と呼ぶらしい。
でも埋め込みSQLはバインド関数経由で呼ばれて、
最終的にはバインド変数と結びつくみたいだし呼びかたはどっちでもいいみたい。
Oracle監修の本でも「ホスト変数(バインド変数)」となっていることも多いしね。
俺がいい加減なのか、Oracleがいい加減なのか・・・。
0106デフォルトの名無しさん
NGNGマニュアルに関しては、oraがいい加減なんじゃないのか?
前にOTNかどこかで読んだが、○○の機能に付いて調べてみると
この機能の詳細は、××マニュアルを読んでください。
と書いてあるのに、××マニュアルには
□□マニュアルを読んでください。という風にたらい回しにされて
結局欲しい情報にたどり着けなかったとかいう笑い話もあったぞ。
0107104
NGNGそういうことね。マニュアルでバインド変数を探したら確かにそういう書き方してる
部分を見つけたよ。どちらでも間違いじゃないっていわれればその通りなんだろうね。
昔の呼び方をそのまま引きずってる感じなんだろうな。
0108デフォルトの名無しさん
NGNGなのでしょうか(ANSI Cみたいな)。そうだとして、こういう規格は
どこか(Webなど)で読めるのでしょうか。書籍onlyでしょうか。
UNIX板で聞いたんですが鼬買いらしく返事をもらえませんでした。
ご存じの方がいらっしゃいましたら、教えてください。
よろしくお願いします。
0109デフォルトの名無しさん
NGNGすいません、SQL教えてください(TT)
下記のようなSQLを発行したらエラーになってしまいます。
SQLServer2000で、
insert into
tableA(
A,
B,
C
)values(
'Y',
'X',
(select max(hoge) from hogehoge group by hogekey)
)
Valuesの中にSelectって書けないんでしょうか??(´ヘ`;)
0110デフォルトの名無しさん
NGNGvalues句じゃなくて、select文でインサートしろ
insert into
tableA(
A,
B,
C
)
select 'Y','X',max(hoge) from hogehoge group by hogekey
0111109でございます。
NGNGΣ(゚Д゚)あふっ!
し、しってたさ、、
ウソです。ありがとう!(>_<)
0112デフォルトの名無しさん
NGNGそういや、
そのSQL発行した後にmax(hoge) が知りたいときってどうすりゃいいんだ?
どんな値をINSERTしたっ!ってのはわからない?
トリガーとかじゃなくて、、、
0113デフォルトの名無しさん
NGNGなんか意味あるの?
insert前に普通にmax(hoge)を求めるselect文を発行すれば何の問題もないと思うけど。
もしinsert後にmax(hoge)が知りたいんだったらcommitかける前に
select文発行すればそのトランザクション内でのmax(hoge)が取れるね。
0114デフォルトの名無しさん
NGNGinsert後に select C from tableA where A='Y' and B='X' すれば?
それか>>113の言うようにトランザクションを宣言して2回 selectすれば?
0115デフォルトの名無しさん
NGNG以下のような出力結果を得たいのですがSQL文がわかりません。
select * from 見積
見積NO 氏名
1000 鈴木
2000 田中
3000 山田
select * from 見積詳細
見積NO 詳細No 商品コード 金額
1000 01 A 100
1000 02 A 100
1000 03 B 300
1000 04 C 500
2000 01 B 300
2000 02 C 500
3000 01 A 100
↓SQL実行
出力
見積NO 氏名 合計金額
1000 鈴木 1000
2000 田中 800
3000 山田 100
0116115続き
NGNG自分で考えてみた文は↓です。
(SQL Assist使用)
SELECT
DB2."見積"."見積NO" AS "見積NO",
DB2."見積"."氏名" AS "氏名",
SUM(DB2."見積詳細"."金額") AS "合計金額"
FROM
DB2."見積詳細",
DB2."見積"
where
DB2."見積詳細"."見積NO" = DB2."見積"."見積NO"
GROUP BY
DB2."見積詳細"."金額",
DB2."見積"."見積NO",
DB2."見積"."氏名"
しかし、これだと↓になってしまい、商品コードごとの合計になっているようです。
見積Noごとの合計はどのようなSQL文にすればよいのでしょうか。。
見積NO 氏名 合計金額
1000 鈴木 200
1000 鈴木 300
1000 鈴木 500
2000 田中 300
2000 田中 500
3000 山田 100
0117DB2ユーザじゃないけど
NGNGgroup by句に「DB2."見積詳細"."金額", 」を含めたらマズイでねえの?
0118デフォルトの名無しさん
NGNGDB2."見積"."見積NO" AS "見積NO",
MAX(DB2."見積"."氏名") AS "氏名",
SUM(DB2."見積詳細"."金額") AS "合計金額"
FROM
DB2."見積詳細",
DB2."見積"
where
DB2."見積詳細"."見積NO" = DB2."見積"."見積NO"
GROUP BY
DB2."見積"."見積NO"
だべ
0121デフォルトの名無しさん
NGNGSELECT
h.見積NO,
h.氏名,
m.合計金額
FROM DB2."見積" h,
(
SELECT
m.見積NO,
SUM(m.金額) AS 合計金額
FROM DB2."見積詳細" m
GROUP BY m.見積NO
) m
WHERE h.見積NO = m.見積NO
詳細の粒度に合わせてから group by すると遅い気がするし
氏名をグループ化するなんてオレにとっては言語道断です
0122115-116
NGNGわざわざSQLを示していただきありがとうございます。
僕も氏名のグループ化はマズイと思います。。
たまたま↑の例では氏名にしてましたが
そこの部分は本当は顧客コードです。
なので、実際には特に問題ありませんでした。
ってそういう次元の問題じゃなかったらスイマセン。。。
0123115-116
NGNGしかも氏名のグループ化をはずすとエラーで出力が得られませんでした。
0124121
NGNGその文脈では group by に氏名は必要だよ
氏名のグループ化って、そういう意味じゃなくてね
大方は 氏名 VARCHAR(50) とかになってるじゃない
当然 INDEXなんて付いてないと思うけど
そういう列を group by 句に書くとソートするのに
時間がかかるの。もしくはリソースを消費するの
group by 句にふさわしい列の属性は、INDEX が付いてて
整数とか短い文字列。区分とかコードになるのが普通でね
0125SQL
NGNGSELECT user.no,(user.no + '@' + isnull(domain.name,'nothing') as mailaddr
FROM user,domain
WHERE user.kbn *= domain.kbn and
) AS WK_TABLE
WHERE mailaddr like '1%' ORDER BY user.no
例:
userテーブル optionテーブル
no,optionKbn kbn , name
1 , 001 001, aaa
2 , 002 002, bbb
3 , 002 003, ccc
4 , 000
この場合、まず、第一段階の副問い合わせの結果が
1,1@aaa
2,2@bbb
3,3@bbb
4,4@nothing
となりまして、そこから mailaddrの頭に1が付くものだけを取ってくる。
つまり
1,1@aaa
だけとなる。
ですが、
実際の結果は
1,1@aaa
2,2@nothing
3,3@nothing
4,4@nothing
となってしまいます。
なんか、副問い合わせが内部で2回走っているような感じです。
なにかお気付きの点等ありましたら、よろしくお願いします。
0126デフォルトの名無しさん
NGNGそれSQL SERVER7 SP3でしょ?原因は外部結合だと思う
外部結合した*=の右側の列をwhere句に使うとおかしくなるよ
たぶん where mailaddr like '%nothing' とすると全部
1,1@nothing
2,2@nothing
3,3@nothing
4,4@nothing
にならない?オレもよくわからん。違う方法を見つけた方がいいみたいだ
0127SQL
NGNG環境としては
SQL Server7のSP6でした。
原因はやはり外部結合っぽいですね。
でも、これは仕様というよりバグっぽく思えるのですが・・
最終的にはunionを使用して解決させました。
ありがとうございました。
0128デフォルトの名無しさん
NGNGVBから、ADOX使ってのSQLなんですが、
Query = "select aaa,bbb,ccc,ddd from master group by aaa"
ってしたいんですが、
「集計関数の一部として指定された式'bbb'を含んでいないクエリを実行しようとしました。」
ってエラーがでてしまいます。
Query = "select aaa,bbb,ccc,ddd from master group by aaa,bbb,ccc,ddd"
こうすると、エラーは出ないんですが、処理速度を上げる為に、
bbb,ccc,dddはgroup化したくないんです。
かと、いって
Query = "select aaa from master group by aaa"
これじゃ困るんです。
ほんとアホすいません、教えてください。
0129デフォルトの名無しさん
NGNGQuery = "select aaa,Max(bbb) bbb,Max(ccc) ccc,Max(ddd) ddd from master group by aaa"
0130128
NGNG>Query = "select aaa,Max(bbb) bbb,Max(ccc) ccc,Max(ddd) ddd from master group by aaa"
「集計関数の一部として指定された式'Max(bbb) bbb'を含んでいないクエリを実行しようとしました。」
ってなってしまいますけど。
0131デフォルトの名無しさん
NGNG0132デフォルトの名無しさん
NGNGなあ、グループ化っていう事の意味をちゃんと考えてみてくれよ。
そうすれば、やりたい事に矛盾がある事や、エラーメッセージの意味がわかると思うよ。
0133デフォルトの名無しさん
NGNGつーことは、カラムbbbはグルーピングしないとならないってだけじゃないの?
本当にグループ化する際に省略可能なカラムなの?
データの中身も書いてないし、少ない情報でSQL書いてくれた>129に失礼だよ。
0134128
NGNGまだ、SQLを始めたばかりで、よく分ってないんですが、
Query = "select aaa,bbb,ccc,ddd from master"
出力の結果は、このように出力が欲しいんですが、
並び順だけは、aaaの項目でグループ化したいって事なんです。
bbb,ccc,dddの並び順は問わない、って事なんです。
Query = "select aaa,bbb,ccc,ddd from master group by aaa"
それで、「group by aaa」だけを記述したんですが、
Query = "select aaa,bbb,ccc,ddd from master group by aaa,bbb,ccc,ddd"
しか方法は無いんでしょうか。
ほんと、アホですいません。
0135デフォルトの名無しさん
NGNG本当にグループ化をしたいの?
もしかして並び替えをしたいだけじゃないの?
group by じゃなくて、order byじゃないの?
0136デフォルトの名無しさん
NGNGってか、SQL入門からやり直したほうが良いぞマジで。
せめてAccessのクエリデザイナを使うとかさ。
0137128
NGNG記述間違えてました。
Query = "select aaa,bbb,ccc,ddd from master group by aaa,bbb"
group byの記述を「group by aaa,bbb」として考えてみてください。
結果的には、
aaa|bbb|ccc|ddd
−−−+−−−+−−−+−−−
1| 1| 3| 18
1| 2| 9| 1
1| 3| 3| 61
2| 1| 13| 6
2| 2| 5| 9
2| 3| 1| 12
3| 1|110| 1
3| 2| 80| 0
3| 3| 13| 13
こんな感じの結果が欲しいんです。
0138デフォルトの名無しさん
NGNGQuery = "select aaa,bbb,ccc,ddd from master order by aaa,bbb"
で希望の結果が出るかどうか試してくれ
0139デフォルトの名無しさん
NGNGgroup by句を用いたselect文で出力できるのは
group by句で指定した列名とSQL集合関数
それ以外の列名を出力項目として列挙するとエラーになる
きちんとSQLの文法を理解したうえで適切な使い方をしないと
後々、自分が困ることになるよ
0140デフォルトの名無しさん
NGNGカラムaaaをグループ化するとカラムaaaで1の値を持つ行は1行しか出せない。
SQLの本は何を読んでる?
>128の希望する結果表だけ見ると、
ここにいるみんなは「order byちゃうんかと小一時間問い詰めたい。」と思っているはず。
0141デフォルトの名無しさん
NGNGもとに戻るまでもうしばらくお待ち下さい。
0142128
NGNG検証遅れてすいません。
結果は、皆さんご指摘の通り、うまく行きました。
まったくもって、アホすいません。
勉強になりますた、ありがとうございます。
そこで、sqlしっかりと身に付けたいんですが、
オススメの書籍あったら、教えてくれませんでしょうか。
0143無料動画像
NGNGあなたを満足させる無料動画集!!
http://www.traffimagic.com/WIPE7MMLZCA/comein/PRTPJ
0144デフォルトの名無しさん
NGNG結合条件はどんな順番で指定すれば効率がいいのでしょうか。
フィルタ条件とあわせた場合、どちらを上に書きますか。
EXPLAIN PLANで見てみると単に条件の順番を変えただけでは
コストが変わらないみたいなのですが。DBは、Oracle8.1.7です。
よろしくお願いします。
0145デフォルトの名無しさん
NGNG0146デフォルトの名無しさん
NGNG表の大きさにも拠るのでなんとも。
順番は先にフィルタを通す必要があるかどうかでも変わるし・・・。
基本的に結果表を結合するまでに小さくなるようにしたほうがいいと思われ。
0147デフォルトの名無しさん
NGNG128ですか?
0148デフォルトの名無しさん
NGNGありがとうございます。
極端に大きさが違う表を結合するときと、同じくらいの
大きさの表を結合する場合は極端に数が減る結合を上に
書くほうがいいんですね。
その場合、大きい表の方を左辺と右辺のどちらにもって
きても同じですか。
フィルタ条件は結合とあまり関係ない日付なんかの場合
ですが、これもすごく数が絞られる結合なら先に書く
ってことでいいのでしょうか。
0149デフォルトの名無しさん
NGNGそれ以前に、インデックスとかは大丈夫か ?
0150デフォルトの名無しさん
NGNGちゃんと実行計画も見ような
0151デフォルトの名無しさん
NGNGhttp://www.seshop.com/detail.asp?pid=1596
0152144=148
NGNG調べてません。一応全部の外部キーに設定されてますが、
NOTとかMAXとかをどうしても使うのでフルスキャン
になってしまう部分もあります。
どこから手をつけるのが一番いいのでしょうか。
初歩的な質問ですみません。よろしくお願いします。
0153デフォルトの名無しさん
NGNGつうか、実行プランは調べたんでしょ。だったら、どこがネックになってるか
わかってるんじゃないの。そのネックをどうやって解消するべきか考えたら。
Oracleはあまり詳しくないんだけど、Oracle8ってルールベースとコストベース
両方できたっけ? コストベースになってるならAnalyzeはしてるよね?
それからOracleはデフォルトでfrom句に書くテーブルの順番って関係あるん
だっけ? 関係あるのなら絞り込みしたい順番にテーブルを書く必要があるで
しょう。
まずは理解できなくてもチューニングマニュアルを読むことから始めましょう。
0154デフォルトの名無しさん
NGNGあと、パーティションテーブルだったらパーティションキーをちゃんと結合条件に入れないと全然だめぽ。
>153
コストベースでテーブルの評価順序を規定する場合はヒント文でなんとかできます。
select /*+ orderded */ 〜って感じで。
でもあくまでオプティマイザへのヒントなんで、オプティマイザが考えたコストが低い場合は却下されまふ。
と、これは>153ではなく>152へ言うべきだったな。スマソ。
0155デフォルトの名無しさん
NGNG0157144=148=152
NGNGきてしまいました。
今度パフォーマンスチューニングのマニュアルを読んで出直
してきます。もっとちゃんとした質問ができるようになったら
またよろしくお願いします。ありがとうございました。
0158デフォルトの名無しさん
NGNGあのね、この場合は完全に本屋へ足を運んだり(あるいは本屋の検索を使う)
ググールで検索したほうが早いから敢えて誰も突っ込まないだけだよ。
今はSQL92が主流だからそれ関係で調べてみるといいかもね。
0159デフォルトの名無しさん
NGNG0160108
NGNG>>158
もちろん、反応を待つよりGoogleや2ch検索を使うほうが早いのでそちらを
試したあとで書いています。書いたあとも何度か別のキーワードを試しました。
Googleで検索した結果、大部分は「SQL9x準拠」という文字がひっかかっている
ようです。それらのほとんどはMySQLやPostgreSQLやDB2やOracleや……の
ドキュメントのコピーが検索されているものです。あとはWebチュートリアル
もありました(が、入手法は書いていない)。
要点はこの二つです:
- 購入するしかないのかどうか (「ない」ことを調べるのは難しい)
- 電子化されている資料があるのかどうか
>>159
宿題終わってないんですね?
0161デフォルトの名無しさん
NGNG環境はWindows2000、SQL Plus9.0です。
0162デフォルトの名無しさん
NGNGOracle だったらuser_cons_columns,user_constraints
から引き出せば。プライマリだったら
user_constraints.CONSTRAINT_TYPE='P'で。
0163161
NGNGどうもです。
0164デフォルトの名無しさん
NGNGオラクル8.1.7からサイベースDBを参照することは出来ますか?
0165デフォルトの名無しさん
NGNG0166デフォルトの名無しさん
NGNGSyBaseじゃなくてか?
0167デフォルトの名無しさん
NGNG7,8年くらい前は結構メーカの異なるDBへの接続製品が話題になってたけど、
最近は全然聞かないなあ。あんまり需要がなかったのかな。
Googleで「Oracle Sybase 異機種 接続」で検索したらいくつか出てきたぞ。
>>165
おそらくSybase ASEのことでしょ。
0168デフォルトの名無しさん
NGNG0169デフォルトの名無しさん
NGNGうん。sybaseASEのことでございます。
ともあれ>>167氏thx
>>168
オラクル側にASE上のテーブルのビューを作りたいのさ。
0170デフォルトの名無しさん
NGNGhttp://www.google.com/search?num=50&hl=ja&ie=Shift_JIS&q=SQL99+%8BK%8Ai%8F%91+%93%FC%8E%E8&btnG=Google+%8C%9F%8D%F5&lr=lang_ja
0172デフォルトの名無しさん
NGNGどっかでまったく同じ質問見たような気がする
0173108
NGNGそうか、「規格書」なんですね…… なんで気づかなかったのだろう。
さっそく読んでみます。ありがとうございます。
>>172 UNIX板のMySQL/PostgreSQLスレじゃないかと思います。
0174デフォルトの名無しさん
NGNGなんというか、まっ先にANSIのWEBサイト見に行こうと思わなかったのかなぁ?
電子文書化されているのか、はたまた有料なのか、それらの疑問は一発で
解決しただろうに・・・
最近はSQL92 & Core SQL99のリファレンス・ハンドブック(日本語で解説)が
\3,000程度で出版されているよん(題名忘れたけど・・・)
0175デフォルトの名無しさん
NGNGまぁ、そのなんだ、、、「マルチですよ」って宣言した時点で放置は決定していると思うが?
0177デフォルトの名無しさん
NGNGネタか釣り決定放置
↓ネタではないですよ
0178デフォルトの名無しさん
NGNG> www.ansi.orgにいって検索してみましたが一件もみつかりませんでした。
ネタだよな?
マジだと"私は上っ面しか見てません"と公言しているようなもんだよ
0179デフォルトの名無しさん
NGNG0180デフォルトの名無しさん
NGNGなんでだろう? 気合が足りないとか♪
0181デフォルトの名無しさん
NGNG>179 だから詳しく状況を(略
0182デフォルトの名無しさん
NGNG1)コンセントは刺さっていますか?
2)コンピュータの電源は入っていますか?
(正面のランプが緑色に点灯していますか?)
3)ディスプレイ(テレビのような画面のことです)は電源が入っていますか?
0183デフォルトの名無しさん
NGNG違うよ。足りないのは、きっと愛だよ。
0184デフォルトの名無しさん
NGNGかなり釣れたなw
0185デフォルトの名無しさん
NGNG0186デフォルトの名無しさん
NGNG釣られたのは君だYO!
0187デフォルトの名無しさん
NGNGレス4個程度で>>184のように"かなり"という表現を使うあたり相当おめでたい
ハッピーハウスにでも逝ったら? ショボイ奴はとことんショボイな(藁
・・・って、ここはネタスレだったっけ?
0188デフォルトの名無しさん
NGNG0189デフォルトの名無しさん
NGNG最近まではここもマターリしてたよ。
0190108
NGNGsearchのリンクから検索ページにいって「SQL92」だと0件。
「SQL」だと求職っぽい内容のを含めて13件。そのうちに
目的の情報なし。
>>177
- まったく同じメッセージを複数のスレッド/板にまたがって貼っている宣伝業者と、
- 情報収集の進捗を書きつつ、より適切と思った板に移動して質問した人
を同じふうに「マルチ」と書いていた(ようだった)ので、どういう意味に
使っているのか確認しようとしたわけです。
>>187 ネタとか煽り(と他の人がいっている)メッセージがあるから
といって、自分が何でも書いていいという理由にはならないこと
ぐらい理解できないのかな?
0191デフォルトの名無しさん
NGNG結局何? Webで読めるところを探してて、見つからなそうなら書籍を買うってこと?
サーチに手間取ったりするなら買ったほうが明らかに安いし、
Web探してる時間を勉強に充てられるんだから効率いいよ。
これ以上は荒れるだけだからもうやめてほすぃ。
0192デフォルトの名無しさん
NGNGpublic/search.aspで検索したってことなのかな?
そこの断り書きをちゃんと読んでるのかね
規格を探すためのポインタが示されてなかったか?
0193デフォルトの名無しさん
NGNG少なくとも「閲覧」は無料でできる。
というか、>>191さんに同意。
0194デフォルトの名無しさん
NGNGとあるスレに投げかけた質問/問題が放置されたからといって
己の主観でマルチポストしていいという理由にはならないこと
ぐらい理解できないのかな?
宣伝、情報収集等その目的を問わず、マルチポスト(=複数投稿)という
行為には変わりはないゆえに同類として扱われる
# 板/スレ住人に適切なスレへの誘導をされた場合を除く
0195デフォルトの名無しさん
NGNG実りある人生をおくれるとおもうよ。
本気で。
0196デフォルトの名無しさん
NGNG接続に使うプロトコルはWIN98にもあるか?
例えばSQL2000のサーバがTCP/IPでWIN98がNetbiosだけとか間違ってね−か?
0197デフォルトの名無しさん
NGNGuid name
1 a
2 b
3 c
t2
uid name
1 ab
3 cc
3 cc
というデータがありまして、t2.uidにデータが存在するt1.*(この場合は
uid1と3のみ)を取得したいと思うのですが、
select t1.* from t1,(select uid from t2 group by uid) as t2 where t1.uid=t2.uid;
と現在考えているのですが、もっとスマートな方法をどなたかご教授頂けないでしょうか?
0198デフォルトの名無しさん
NGNGスマートって何よ? 他に方法ないじゃん。
変えてもexists使うとかinを使うとかしかできないよ。
これくらいのクエリでスマートさを求めるより、
インデックスの張り方とかを考えたほうがいいとオモワレ
0199197
NGNGいえ、全く速度面とかに問題があるのではなくて、何かやりたいことに
ぴったしはまった結合があったように思えて夜に寝てしまいました。
select t1.* from t1 include join t2;
くらい短く書く方法が・・・あったような気がするだけな気がしてきました。
無いという答えが自分の中に明確に無かったので、
言って貰えて助かりました。ありがとうございました。
0200198
NGNG>199
なるほどね。コードに疑念を持つことは良いことだよ。
でも疑心暗鬼にならないようにほどほどでキリをつけるのも一考だね。
0201デフォルトの名無しさん
NGNGexists
0202デフォルトの名無しさん
NGNG文字列の引用符として’を使っている構文で文字列の中に’があった場合、どうやって記述すればよいのでしょう??
よろしくおながいします。
0203デフォルトの名無しさん
NGNGガイシュツ
0204デフォルトの名無しさん
NGNG死ね
0205デフォルトの名無しさん
NGNG怖い人たちだなぁ...
>>202
DBエンジンによって違うよ。
'⇒''って変更してみたり、'⇒\'って変更してみたりしてみそ
0206デフォルトの名無しさん
NGNGどうやればできるのでしょうか?
やっぱり無理なのかな。
0207デフォルトの名無しさん
NGNG興味があったんで調べたが、非常に難しいらしい。
つーか純粋にシェルを呼び出す事はできないみたい。
ttp://members12.cool.ne.jp/~yoshi0915/oracle/000831/20437.html
0208デフォルトの名無しさん
NGNG0209デフォルトの名無しさん
NGNGシェルのコマンド叩ける方法があったような気がしたが
なんだっけか?
#なんか急に知りたくなった。。。。
0210デフォルトの名無しさん
NGNG!
0211209
NGNGエクスクラメーションじゃ出来なかったぞな。
気になってマニュアルまで調べてしまったが
host ダタヨー
ちなみに、Win2kでOra817な環境ね。
SQL*PlusはGUIなヤシ
0212デフォルトの名無しさん
NGNGUNIXのsqlplusは!だね、今でも。
oracle9iでそうだった。
0213デフォルトの名無しさん
NGNGって
pricetableからidが12のpriceを取得する
ということですよね?
0214デフォルトの名無しさん
NGNG入門書嫁。
つか試した方が早い。
0215デフォルトの名無しさん
NGNGFROM weatherReports
ORDER BY location, time DESC;
PostgreSQLのマニュアルにある例なんだけど、
http://osb.sra.co.jp/PostgreSQL/Manual/PostgreSQL-7.1-ja/sql-select.html
この例だとLocationの重複を取り除いた天気Reportが
Locationのアルファベット順に出てきますよね。
これをLocationの重複を取り除いて、timeが新しい順に
取得したい場合はどうすればいいのですか?
0216デフォルトの名無しさん
NGNGAccessのクエリって勝手に改行消すからいちいち改行して解読するんですが。
フリーのソフトも探してみたのですがイマイチしっくり来なくて。。
ちなみに見つけたモノです↓
ttp://www.cypress.ne.jp/iceprobe/sqlice/
ttp://www2.freejpn.com/~az0652/softwares/splcnv.htm
0217582
NGNGなんでそんな回りくどい、アホなqueryしてんだ?
group byなんてそんなんで使うか?普通。
>198
>199
無くねーよ。
select * from t1
where
uid in (select distinct uid from t2)
でええやん?
>197 の仕様なら。
0218デフォルトの名無しさん
NGNGORDER BY句からlocation引いて、「ORDER BY time DESC;」
でだめなの??
0219デフォルトの名無しさん
NGNG0220219
NGNG0221デフォルトの名無しさん
NGNGselect * from tab
と
desc
を教えてください。
0222デフォルトの名無しさん
NGNG話はそれからです。
0223そもそも…
NGNG1000以上"って条件じゃだめなのかな?
'最大値'っていうのがクセモノだな・・・。
そいつはもしかして、値が指定されたらその値で、指定されなかったら
最大値でってことかな?。(ホスト言語からSQLを発行するような場合
渡河) であれば、状況によってSQL文を切り替えることも出来るはず。
BETWEENにこだわる理由は何かな?
0224そもそも…
NGNG解決してるジャン。あほでした。m(__)m
0225221
NGNG0226デフォルトの名無しさん
NGNG>225
初等教育受けなおしてきた方がいいんでない?(w
0227コンパイル成功!?
NGNG『Oracleにおいて、SQL文「select * from tab」を発行
すると得られる情報と同様の情報を、SQL Serverで
得るにはどういうSQL文、或いは、コマンドを発行す
ればいいのでしょうか。 教えてください。』
しかし、私の実行環境(脳ミソ)ではコアを吐いてし
まいました。
お粗末でした。
以上です。
0228デフォルトの名無しさん
NGNG0229デフォルトの名無しさん
NGNGヒントはsp_・・・
0230デフォルトの名無しさん
NGNG必要な全てを抽出するのと、いったんレコード群1を抽出し、都度SQLでレコード群2を抽出する
ようプログラムを書くのとどちらがパフォーマンスがよいですか?
なほ、何件ヒットするかは不明です。数件かも知れないし数万かも
0231デフォルトの名無しさん
NGNG0232デフォルトの名無しさん
NGNGきちんと実行計画みたらわかるんじゃん?
で、どちらでもきちんと適切と思われるINDEXを使用しているならば
たぶん1発の方が多少なりともコストは低いと思われ。
SQLの書き方にもよるが、複数回SQL文を発行すると
オプティマイザでの解析処理が複数回走ってしまう可能性があるので。
あと、何らかの言語でループさせて複数回SQL文を発行するんだろうけど
その分のコストもある死ね。
0233デフォルトの名無しさん
NGNGどうもです。
実行計画なるもにその情報があるわけですね。これはチト勉強が要りそうですね
「一発の方が多少なりともコストが低いと考えられる」ということですが大変参考になります。
ありがとうございます。
ちなみにアドバイス随時募集です(^^;
ちょ〜亀レスでも良いです。よろ。
0234デフォルトの名無しさん
NGNGちゃんとレス嫁。
>198にて、『変えてもexists使うとか「in」を使うとかしかできないよ。』
と書かれてる。
大体、distinctを使う時点で厨房なのに、口調だけ偉そうなのは止してくれ。
0235デフォルトの名無しさん
NGNGmysql並のsql文でやれることでもないやん。
で、君ならどんなquery書くの?
0236234
NGNG漏れはt1がユニークインデックスと前提にして考えて、
select * from t1
where
uid in (select uid from t2 group by uid)
と書くと思う。
ハッキリ言って、t1とt2のテーブルの規模が解らないからあくまでひとつの回答でしかないけど。
それにデータ量によってはオプティマイザによって、>197と同じ式に展開されて
サブクエリ側の結果表を先に作ってネステッドループさせるようになると思うし。
で、distinctとgroup byは結果表の作り方が異なるじはずだが、
少なくとも1000万件くらいのデータで実測して言ってるよね?
コストが少々高くてもアクセスバイト数やインデックスの使われ方によってはベラボーに速いはずだけど。
0237デフォルトの名無しさん
NGNGselect * from hoge where rownum>2 and rownum<8
のような意味合いなのですが、rownumをこういうふうには使えなかったので…
0238デフォルトの名無しさん
NGNGこのケース、そもそもdistinctもgroup byも必要ないけど。
サブクエリを先に評価するようオプティマイザを誘導する場合でも
俺はそうは書かないな。
> distinctとgroup byは結果表の作り方が異なる
まじ?
>>237
select *
from (select hoge.*, rownum num from hoge)
where num between 3 and 7
0239デフォルトの名無しさん
NGNG>少なくとも1000万件くらいの
(*´Д`*)Pu...
こんな厨房質問する奴がそんな案件携わったるわけないやん。
、と思いたい。
だいたいそんな大きいデータ量でネステッドループですか・・・
groupとuniqueでgroupの方が早いか?
DBなに使ってんの?ボラ駐っぽいな・・・
つーか、データ量が多けりゃindex使えなんて、何当たり前のこと
嬉しそうに言ってんだ・・・
distinct(unique)を使う時点で厨房だそうですYO!皆さん。
扱うデータ、スキーマによるとか(また当たり前のこと
言い出さないでね。
>238
joinしてis not nullでもする気?
取り合えず、書いて見れ。
0240デフォルトの名無しさん
NGNGjoinなら必要だけど、in(query)でしょ。exists(query)といっしょ。
0241デフォルトの名無しさん
NGNG#まぁ、query planが一緒かっつーと違うだろうけど。
で、!使わずに!考えてみたんだけど。
>238 == 240 ?
の言ってる効率のいいqueryみてみたいんで、
取り合えず、書いてミレ。
0242238,240
NGNGa) select * from t1 where uid in (select distinct uid from t2);
b) select * from t1 where uid in (select uid from t2 group by uid);
c) select * from t1 where uid in (select uid from t2);
d) select * from t1 where exists (select * from t2 where t2.uid = t1.uid);
この4つの結果が同じってのはおけ?
んで、効率かぁ。
existsを使った場合は必ずメインクエリから評価されるけど、
inだとオプティマイザが評価順序を選択できる。
俺習慣だと、
t2.uidにインデックスが切ってないとか、
t1のレコード数 >> t2のレコード数とか、
t2がリモートデーターベースにあるとかで、
サブクエリから評価して欲しい場合にしかinは使わないな。
その場合は、
select * from t1 where uid in (select uid+0 from t2);
って書いてる。残りは全部exists使ってる。
a)、b)みたいに書いたほうが効率がいいケースてのは…ある?
0243241
NGNGMiguel de Icazaの記事読んでて眠くなったので明日レスするぽ。
http://www.os-omicron.org/~takano/private/trans/bongo-bong_j.html
0244241
NGNG戻ってきたよ。
眠気眼なんですが、だいたい分かったポ。
>a) select * from t1 where uid in (select distinct uid from t2);
>b) select * from t1 where uid in (select uid from t2 group by uid);
>c) select * from t1 where uid in (select uid from t2);
上の2つはだいたいoptimizeされて一緒だろうけど、
#たぶん、データ量にもよるけど(;´ω`)
a>b>cの順になると思うぽ。cは無駄な比較がでる。
データ量が小さければuniqueさせるコストも低いし、大きい場合は
比較時に有利。a>bは実測からもわかる。
dは、nested loopされるっぽいけど、
t1*t2の行数回、比較が行われるので処理対象のデータ量多い場合
向かないと思うな。小さい場合はd > c > a ではないかな、と。
dとaの損益分岐点はどの辺にあるのかはわかりませんが。
0245242
NGNGcをt1から評価する場合はd、t2から評価する場合はaに
暗黙に変換してるんでないかと漠然と思ってたんだけど、
よくわからんw
c→aの変換が行われないとすると、t2.uidのユニークさ加減
によってc > aだったりa > cだったりするんかな?
> dは、nested loopされるっぽいけど、
> t1*t2の行数回、比較が行われるので
existsは条件に合致したレコードが見つかった時点で評価終了
でなかったけ?
例えばサブクエリのwhere節を外して、
select count(*) from 100万件なテーブル
where exists (select * from 100万件なテーブル);
とやってもかなりのスピードで帰ってこない?
なもんで、サブクエリの参照にインデックスが使える場合は
問答無用でexists使う習慣がついてる。
なんにせよもつかれ。続きは明日以降。
0246237
NGNG0247237
NGNG0248236
NGNGスマム。235がでかい口叩いたので釣られて基本事項を挙げてしまいますた。
元々の出題をしたほうは大きい案件に携わっているとは思ってないYO!
DBはOra。
テーブルでかくても(t1を)ユニークインデックスでスキャンするよう持っていければ
existsでサブクエリ側(t2)をインデックスレンジスキャンさせるよりは格段に速いっす。
0249デフォルトの名無しさん
NGNGどのように記述すれば良いでしょうか?
お願いします
insert into tableA select itemA,itemB,(ここにsysdateを入れたい) from tableB where id='1';
0250デフォルトの名無しさん
NGNG入れたいなら、入れろよ。
入れてエラーが出るなら、それを書け。
0251249
NGNGレスありがとうございます
記述のしかたがわからないんです・・・
insert into tableA select itemA,itemB,sysdate from tableB where id='1';
と書くと、
ERROR 1054: Unknown column 'sysdate' in 'field list'
0252そもそも
NGNGsysdateって、関数なのでは?
insert into tableA select itemA,itemB,sysdate() from tableB where id='1';
でどうでしょ?
0253そもそも
NGNGもしそうなら、sysdate()はエラーになってしまいますね。
ごめんなさい。
0254249
NGNGresありがとうございます
DBはMySQLです
こんな感じかなと思ったんですけど、ど忘れしちゃいました・・・(w
insert into tableA select itemA,itemB,to_char(sysdate,'yyyymmdd') from tableB where id='1';
別の方法で日付入れよかな・・・
0255デフォルトの名無しさん
NGNGインサート テーブルA
XX.A
XX.B
(セレクト A、B
フロム B
ウェアー ID=1) XX
SYSDATE
イメージはこんな感じになるのでは?
0256
NGNGおまえは、sysdateの記述の仕方もわかってなかったのか?
sysdateの使い方は、マニュアルを読め。
インサートの項目に入れるには、それからだ。
0258241
NGNGそうやねーoptimizerで吸収されとるわ。
existsのとこt1*t2はないっすね。aのが早い場合もあるんだろうけど、
indexあったらdっすね。一つ勉強になったよ。
0259デフォルトの名無しさん
NGNG0260デフォルトの名無しさん
NGNG●●●●●●●●「オセロさえ納期内に作れない=OO役立たず 」祭り●●●●●●●
/| | |_____ΦΦΦΦΦΦΦΦΦΦΦ||ΦΦΦ
| | | ̄ ̄ ̄ /| ||
| | | / /|TTTTTT TTTTTTTTTT||TTTTT
| /\ | /|/|/|^^^^^^ |三三| ^^^^^^^^^^^||^^^^^^^
| / / |// / /|
| / / |_|/|/|/|/|
| / / |文|/ // /
|/ /. _.| ̄|/|/|/ Λ_Λ
/|\/ / / |/ / (___)
/| / / /ヽ /〔 非OO 〕〕つ
| | ̄| | |ヽ/l `/二二ヽ
| | |/| |__|/ Λ_Λ / /(_)
| |/| |/ ( ´∀`) (_) Λ_Λ
| | |/ // / ^ ̄]゚ (` )
| |/ ゚/ ̄ ̄_ヽ ⊂〔〔 非OO 〕
0261デフォルトの名無しさん
NGNGどなたか教えて下さい
請求残高に
得意先ID 残高
001 20000
002 30000
003 50000
売上明細に
伝票No 日付 得意先ID 行No 明細…
00001 140601 001 01
00001 140601 001 02
00002 140601 003 01
00002 140601 003 02
00003 140603 003 01
00003 140603 003 02
とある時、SQLで結果を
得意先ID 残高 伝票No 日付 行No 明細…
001 20000 00001 140601 01
001 20000 00001 140601 02
002 30000
003 50000 00002 140601 01
003 50000 00002 140601 02
003 50000 00003 140601 01
003 50000 00003 140601 02
としたいのですが、なかなかうまくいきません
お手数とは思いますがどなたかご教授して下さいませんでしょうか?
0262
NGNG0263デフォルトの名無しさん
NGNGこのSQL文を実行すると、nameに「a」が含まれるもの意外も表示されるのですが、なぜでしょうか?
select * from testA WHERE name LIKE '%a%';
たとえば「Tシャツ」という名称もヒットしてしまいます・・・
0264デフォルトの名無しさん
NGNG違った
0265デフォルトの名無しさん
NGNG0266デフォルトの名無しさん
NGNG出現し得ないからますます謎だな
0267デフォルトの名無しさん
NGNGおいらのとこではShift-JISで正常に動くよ。
MySQLバージョンいくつ?
何でクエリー発行しているの?
0268デフォルトの名無しさん
NGNG0269デフォルトの名無しさん
NGNGテーブルに存在するか確認するにはどうしたら
いいのでしょうか?
教えてください。
0270デフォルトの名無しさん
NGNGexists
0271デフォルトの名無しさん
NGNGselect
a.得意先ID,
a.残高,
b.伝票No,
b.日付,
b.行No,
b.明細
from
請求残高 a,
売上明細 b
where
a.得意先ID= b.得意先ID(+)
ODER BY
a.得意先ID
オラクルならこうかな。(未確認
0272ペーパープラチナ(9i対応
NGNGさらにOracle9iなら、SQL99の書式で。(未確認)
select
得意先ID,
残高,
伝票No,
日付,
行No,
明細
from 売上明細
left outer join 請求残高 using(得意先ID)
order by 得意先ID;
0273ペーパープラチナ(9i対応
NGNG×
from 売上明細
left outer join 請求残高 using(得意先ID)
○
from 請求残高
left outer join 売上明細 using(得意先ID)
おっちょこちょいでスマソ。
0274263
NGNGmysql.のバージョン
mysql Ver 11.12 Distrib 3.23.33, for pc-linux-gnu (i686)
調べてみたんですが、解決方法がわかりませんでした・・・
解決するにはどうすれば良いのでしょうか?
よろしくお願いします
0275261
NGNG>261です
みなさんが教えて下さったおかげで解決しました
>272さんのSQL99の書式には
ものすごくおどろかされました。
返信が遅れましたこと、並びに貴重なお時間を割いてしまったこと
深くお詫び申し上げます。
0276デフォルトの名無しさん
NGNGDB の重複している行を削除するのはどうすりいいの ?
(DBMS は、Postgres 7.2)
VALUE
-----
AAAA
BBBB
AAAA
CCCC
BBBB
DDDD
を
VALUE
-----
AAAA
BBBB
CCCC
DDDD
にしたいだけなんだが...。
0277デフォルトの名無しさん
NGNG0278デフォルトの名無しさん
NGNGそもそも重複行というものは存在しないらしい
0279デフォルトの名無しさん
NGNGDELETE テーブル名 WHERE VALUE ='AAAA' AND ROWNUM =1
では無理か?
0280デフォルトの名無しさん
NGNG0281デフォルトの名無しさん
NGNG(select VALUE FROM テーブル名 GROUP BY VALUE HAVING COUNT(*) > 1)
AND ROWNUM > 1;
ではこれでどう?
何か結合使ったスマートなやり方ありそうな気がするんだけど、使いなれてないからパっと思いつかん。
0282デフォルトの名無しさん
NGNG0283デフォルトの名無しさん
NGNG> クエリの結果から重複を無くしたいのなら select distinct 〜
う〜〜〜ん、DB から除きたいんだよね...。
実は、今は
select distinct ... した奴で新しい DB 作る
元の DB を消す。
新しい DB を元の DB の名前にリネームする。
ってやってんだけど、どう見ても美しくないよね...。
>>278
> リレーショナルデータベースというのは定義に厳密なら
> そもそも重複行というものは存在しないらしい
まあ、それはそうなんだけど...。いろいろしがらみがあって...。
>>279
ROWNUM って Postgres で使える ? とりあえず、やってみます。
0284デフォルトの名無しさん
NGNGrowid擬似列が使えるなら
delete from tbl a
where
not exists (
select 1 from tbl b
where b.value = a.value
having min(b.rowid) = a.rowid
)
とかできるけど、やっぱ
> select distinct ... した奴で新しい DB 作る
> 元の DB を消す。
> 新しい DB を元の DB の名前にリネームする。
のがいいような。
0285デフォルトの名無しさん
NGNGOracleだったら
delete from tbl a
where a.rowid > (
select min(b.rowid)
from tbl b
where b.value = a.value
)
でしょう.
たぶん速度的にも一番速いと思うのだが.
PostgreSQL だったら rowid を oid に変更すれば OK かな?
0287デフォルトの名無しさん
NGNGやり方or関数とかありますか?
AとBで結合してBがNULLだったらDECODE(B.nanka, NULL, 1, 0) AS B_FLGとかやってますが。
0288デフォルトの名無しさん
NGNG0289デフォルトの名無しさん
NGNG> 外部結合で結合したレコードがNULLだった場合を判定するスマートな
> やり方or関数とかありますか?
つーか、NULL だったらどうしたいの ?
単にフィールドに NULL かどうかのフラグを入れたいだけなら...
> AとBで結合してBがNULLだったらDECODE(B.nanka, NULL, 1, 0) AS B_FLGとかやってますが。
で十分スマートだと思うけど。(Oracle8 はよく知らんから、もっといい関数があるかも知れんけどね。)
0290初心子
NGNGselect a as b where b='hoge';
↑のように、ASで付けた名前をWHEREに使用できないのでしょうか?
0291初心子
NGNG正しくは
select a as b from c where b='hoge';
↑のように、ASで付けた名前をWHEREに使用できないのでしょうか?
です。
0292250
NGNG入れたいなら、入れろよ。
入れてエラーが出るなら、それを書け。
0293デフォルトの名無しさん
NGNGやりたいならやれよ。
やってエラーが出るなら、それを書け。
0294デフォルトの名無しさん
NGNGアフォか?
0295初心子
NGNG0296デフォルトの名無しさん
NGNG0297デフォルトの名無しさん
NGNGつーか 291が 何をやりたいのか さっぱりわからん(w
asなんかで 名前つけるってのが、わかんねぇ。
なんで 名前つけないと あかんのや。
つーか 別名のつけ方ってのが あるだろ。
フィールドに対して、別名がつけられるかどうかは 知らんが。
0298デフォルトの名無しさん
NGNG氏ね
0299デフォルトの名無しさん
NGNGはい?
0300デフォルトの名無しさん
NGNG0301デフォルトの名無しさん
NGNG可哀想だろ (w
0302デフォルトの名無しさん
NGNG0303デフォルトの名無しさん
NGNG> つーか 291が 何をやりたいのか さっぱりわからん(w
マジで>>297は>>291の質問の真意をわかってねえんだろうな
笑ってる場合じゃねえと思うぞ
0304デフォルトの名無しさん
NGNGけなすのは 人一倍得意だけどな(w
0305ペーパープラチナ(9i対応
NGNGうん、できないです(^^;
でも
select b from ( select a as b from c)
where b='hoge';
ってやった場合は出来ますけど
こんな事を言ってるんじゃないですよね・・・。たぶん。
結果セットのフィールドに別名を割り当てているから
じゃないかな。
似た話で、order by句に対象計算カラムの別名ではなく
select句と同じ計算カラム(sumとか)をもう一度書か
なくてはいけないというのもある。
>>305の例もまずfrom句の中間ビューが作成され、
カラムにはbという名前で割り当てられるから
bという別名でアクセスしなければいけないのだろう。
0308デフォルトの名無しさん
NGNGOracleなら>>305みたいにインラインビュー使う。
9i以降ならwithでそれっぽいことができるのかな?
Accessは少なくともselect節、もしかすると全域で別名の後方参照ができる。
MSSQLは知らない。もとい、他は知らない。
>>307
Oracleはorder byには別名使えてgroup byには使えなかったりする。
いまいち納得いかないんだよなー。
0309デフォルトの名無しさん
NGNG納得いかなくない。
order by は結果セットに対してgroup byはテーブルに対してかかるのだから
その動きは直感的です。
>>308が言ってる事は>>290の質問と同じだよ。テーブルに対してかかるものを
別名つけられなくても、別に困らないし、逆に別名が有効になれば混乱する。
0310デフォルトの名無しさん
NGNG>納得いかなくないことない。
それは、RDBMSの実装上の都合。
0311デフォルトの名無しさん
NGNG実装上の都合じゃないでしょ。後方参照の実装なんて簡単だし。
思想の違いでしょ。
俺はT-SQLの方がいやだ。
0312デフォルトの名無しさん
NGNGはぁ?
order by,group byの書き方知ってるの?
0313デフォルトの名無しさん
NGNGわかんにゃい。おしえて
0314デフォルトの名無しさん
NGNGお前は何か?タブレット使ってSQL書き込んでのか?あ?
0315308
NGNGんでも結果セットに無い列もorder byで使えるじゃん。
それに比べてgroup byは不便だなぁ、と思ってしまうのです。
言わんとするところは解ったけど。
group byにコピペするかインラインビューを一段増やすかで
不毛に悩むのがだるい。
0316デフォルトの名無しさん
NGNGいやネタじゃなくて(泣
0317デフォルトの名無しさん
NGNGgoogleで検索しようとしても「withは一般的な〜」とか言われて検索できんのよ
0318ペーパープラチナ(9i対応
NGNGこんな感じです。WITH句を使うと、中間ビューを事前に定義できます。
WITH
tbl_alias AS
(
SELECT col1,col2 FROM tbl_a
WHERE col1='hoge'
)
SELECT col1,col2 FROM tbl_alias;
SQLの書式を調べるなら、Oracleよりマニュアルをダウンロードした方が
てっとり早いと思いますよ。
0319デフォルトの名無しさん
NGNG「+with」で検索しる
0320デフォルトの名無しさん
NGNG0321デフォルトの名無しさん
NGNG0322デフォルトの名無しさん
NGNGviewってのは、テーブルを結合して 見せてるだけのものなのだ。
だから、viewに追加するのではなく、元のテーブルに追加するのだ。
0323デフォルトの名無しさん
NGNG元のテーブルにはあるけど今までviewとして見せていなかったものを
新たに見せたいって話じゃないの?
すでに>>321で答えが出てるけど。
0324320
NGNGサンクスコ
>>322
323が説明してくれた通り。わかりづらい聞き方でスマソ
ところでまた質問なんだけど、SELECT文とか使うときに全フィールドの
中身を取り出す場合には select * from テーブル名、という風に
「*」が使えるよね?だけどROWNUMとか使う場合だと
select 全部のフィールド名カンマ区切り,ROWNUM as id from テーブル名
とかやらないと出来ない気がするんだけど、
select *,ROWNUM as id from テーブル名
みたいなノリで出来ないの?いちいち全フィールド名書くのがメンドイ。
0325デフォルトの名無しさん
NGNGselect テーブル名.*,ROWNUM as id from テーブル名
0326320
NGNGうおおお朝っぱらからありがとう!
大変助かりまする
0327デフォルトの名無しさん
NGNG・入力必須項目なし
・検索項目は3つ
・AND条件で絞込み
以上の条件を満たす検索画面で作られるSelect文を
CやJavaのプログラムで効率よく書くにはどうしたら良いでしょうか?
select * from TABLE where ColumnA = 'a'
and ColumnB = 'b'
and ColumnC = 'c';
普通に書くと一番長い場合こうなりますが、
検索条件の入力がない場合など、色々組み合わせを考えて
select文の文字列を力ずくで作るのはなんだか格好悪いですし、
検索条件が増えたときなど保守性にも欠ける気がします。
なにか王道などあればよいのですが・・・
0328デフォルトの名無しさん
NGNG> 検索条件の入力がない場合など、色々組み合わせを考えて
> select文の文字列を力ずくで作るのはなんだか格好悪いですし、
そんなに組み合わせあるか ? 要は...
[ when Condition1 = 'Value1' [ and Condition2 = 'Value2' [and ...]]] って言う文字列作るだけだろ ?
一番最初だけ例外的に 'when ' がつくだけで、後は 'and ' と条件式を付加していけば良いだけ。3個だろうが 1,000個だろうが一緒だよ。
> なにか王道などあればよいのですが・・・
そんなもん無いから、地道に考えろ。
0329デフォルトの名無しさん
NGNG回答有難うございます。
ちょっと質問の仕方が大げさ過ぎたかも知れないです。
>>328のように私も処理していますが、
もっといい方法がないかと思いまして・・・
他人のソースを見て、「なるほどね、そういうのもありか」と
感心するケースがまだ多いです。
>地道に考えろ。
これが王道でした。もっと勉強して洗練させていきたいです。
0330デフォルトの名無しさん
NGNGプログラム側で条件変化するクエリ文字列を作成する方法だよね?
漏れはこんな感じでやることが多い。
query = "Select * From table Where (0=0) "
+ (Aが指定されてる)?" And ColumnA = " + A:""
+ (Bが指定されてる)?" And ColumnB = " + B:""
+ ...
ポイントはベースとなる部分に Where (0=0) など必ず真になる式を書いておく。
すると以降の条件文字列を同じように結合していくことができる。
(最初の条件だったら Where それ以降だったら And という判断をしなくて良い)
プログラム側の指定によってセレクトする列が変わるときは…
まぁ、いろいろとテクニックがあるのですよ。
0331デフォルトの名無しさん
NGNG質問です!
Commit(更新確定)というのは、DB内のあるテーブルだけを指定して行う
ことは可能でしょうか?
もし可能なら、やり方を教えていただけませんか?
それとも、DB全体に対してしかできないのでしょうか?
0332
NGNGコミットって、テーブルとかDBとかに対してではなくて、
トランザクションに対して行われるものでは?
考え方からして、間違っていませんか?
0333ES
NGNG一番新しい日付だけを取得したいのですが
どう書けばいいのか教えていただけないでしょうか?
0334デフォルトの名無しさん
NGNGselect max(日付) from テーブル group by 日付;
0335デフォルトの名無しさん
NGNG0336ES
NGNG接続するのはMYSQLです。・・・
>>>334さん
ありがとうございますm( )m
トライしてみます。
0337デフォルトの名無しさん
NGNG0339デフォルトの名無しさん
NGNGTABLE:
ID F1 F2
----------------
1 1 1
2 1 2
3 2 1
SELECT F1, MAX(F2) AS M FROM TABLE GROUP BY F1
とすると
F1 M
---------
1 2
2 1
これを SELECT * FROM -----
ID F1 F2
----------------
2 1 2
3 2 1
と求めたいのです。
SQLの書き方を教えてください
0340デフォルトの名無しさん
NGNG0341デフォルトの名無しさん
NGNGありがと
漏れもそれやったんだけど、
IDがGROUP BYに入ってないからだめだと言われて・・・
0342デフォルトの名無しさん
NGNGSELECT
MIN(ID),
TABLE.F1,
TABLE.F2
FROM
TABLE,
(SELECT F1, MAX(F2) F2 FROM TABLE GROUP BY F1) MAX_TABLE
WHERE
TABLE.F1 = MAX_TABLE.F1 AND
TABLE.F2 = MAX_TABLE.F2
GROUP BY
TABLE.F1,TABLE,F2;
by oracle
未確認、たぶんいけるとおもうけど
0343339
NGNGやってみる
0344334
NGNGすまん、group by 日付 は不要だ。(何で、こんなもんつけちゃったんだろ...。)
単純に、select max(日付) from テーブル; で OK だ。
0345ペーパープラチナ(9i対応
NGNGこんな感じですね。(※テスト環境 Oracle9i)
意図と反してたらゴメンなさい。
DROP TABLE t_test;
CREATE TABLE t_test
(
id varchar2(10) PRIMARY KEY,
f1 varchar2(10),
f2 varchar2(10)
);
INSERT INTO t_test VALUES('01','1','1');
INSERT INTO t_test VALUES('02','1','2');
INSERT INTO t_test VALUES('03','1','3');
INSERT INTO t_test VALUES('04','2','1');
INSERT INTO t_test VALUES('05','2','2');
INSERT INTO t_test VALUES('06','3','1');
INSERT INTO t_test VALUES('07','3','0');
INSERT INTO t_test VALUES('08','3','5');
INSERT INTO t_test VALUES('09','3','5');
INSERT INTO t_test VALUES('10','3','0');
COMMIT;
SELECT
id,
f1,
f2
FROM t_test
WHERE
(f1,f2) IN
(SELECT f1, MAX(f2) FROM t_test GROUP BY f1);
0346339
NGNG直接やってみたらエラーがでたけど342を鬼のように見ていたら
突然
SELECT * FROM TBL_SIMPLE
WHERE F2 = (SELECT MAX(S.F2) FROM TBL_SIMPLE S WHERE S.F1 = TBL_SIMPLE.F1)
を思いついた。ありがとう。
0347デフォルトの名無しさん
NGNGそのSQL、なんか変じゃねぇか?
0348デフォルトの名無しさん
NGNGああ、SQLの書き方でそんなのはじめてみた。
真似させてもらう。SAGE。
0349デフォルトの名無しさん
NGNGORACLEしか知らないけど、変じゃないよ。
レコード数増えると2次曲線的に重くなりそうだけど。
0350デフォルトの名無しさん
NGNG>>345のテーブルを借用するならば・・・
select * from t_test
where (F1,F2) IN (select F1, MAX(F2) from t_test group by F1);
ID F1 F2
---------- ---------- ----------
03 1 3
05 2 2
08 3 5
09 3 5
これが一番簡単なんではないのか?
汎用性があるのかはしらんが・・・
(Ora R8.1.7で確認)
0351350
NGNG行途中の半角スペースも消されるんだっけか。
見ればわかるとは思うが。
ID F1 F2
---------- ---------- ----------
03 1 3
05 2 2
08 3 5
09 3 5
0352339
NGNGそれだ!
うん、シンプル。
みんなありがとう。
お陰で家に帰れたヨ。
0354デフォルトの名無しさん
NGNGunlimited tablespaceの権限をつけてあげないとテーブル自体が
表領域に作れないんですね。(もちろんテーブルスペース作る権限は持ってますよ)
いつもDMLしか触らせてもらえないから知らなかったです。
0356デフォルトの名無しさん
NGNGそのうえUNIXときたら 頑固だしね。
0357デフォルトの名無しさん
NGNGロールつけてやるだけじゃまったく足りないよね。
connectのロールなんかくだらないものしか入っとらん。
結局grantかよ。。。。
0358デフォルトの名無しさん
NGNG0359デフォルトの名無しさん
NGNG0361デフォルトの名無しさん
NGNG0363SQL ◆Wij7wZFpXs
NGNGSELECT 'GIKO'
どうよ
0364デフォルトの名無しさん
NGNG0365デフォルトの名無しさん
NGNGこんなとこにいる漏れも香具師か・・・・
>ここって香具師ばかりだな
>こんなとこにいる漏れも香具師か・・・・
はぁ?
0367365
NGNG「かぐし」って厨房のことだろーが
それくらいも知らねーのか(藁
0368デフォルトの名無しさん
NGNGひさびさにワロタ
0369デフォルトの名無しさん
NGNG自分、アホの子やね。
0370デフォルトの名無しさん
NGNGプ
お前も香具師ダナ
0371デフォルトの名無しさん
NGNG_l\
/⌒/ l
( ヽ ヽ_/ノ
⊂(__∪ー∪
0372デフォルトの名無しさん
NGNG新生2ちゃんねる語の誕生です。
0373デフォルトの名無しさん
NGNG0374デフォルトの名無しさん
NGNG0375デフォルトの名無しさん
NGNG違うだろ〜〜〜
ヤツ→ヤシ→香具師
となっただけ。
っつーか、ダウソ板の流れだろうな、コリは。
0377デフォルトの名無しさん
NGNG激しく支持
皆で広めようぜ
0378デフォルトの名無しさん
NGNG0379デフォルトの名無しさん
NGNGそれくらいカグシでも知っとる。
0380デフォルトの名無しさん
NGNG「プ おまえもカグシだな」
「プ おまえもカグシだな」
0381デフォルトの名無しさん
NGNG俺なんかずーっとヤシって読むのかと思ってた。
0382デフォルトの名無しさん
NGNG>ずーっとヤシって読むのかと思ってた
うそつけこのカグシ野郎。
2chで初めて知ったんだろ。
0383デフォルトの名無しさん
NGNGつーか 2chでしか 盛んに使われてない・・・。
おれも、ここ見てなかったら、そんな言葉は シラネぇ。
0384デフォルトの名無しさん
NGNG知ってる方が変。
常用漢字じゃない罠。
0385デフォルトの名無しさん
NGNG0386デフォルトの名無しさん
NGNG常用漢字しか使われてないようだが?
0387デフォルトの名無しさん
NGNG当て字という罠
0388デフォルトの名無しさん
NGNG>>365
を見て 笑ってみよう!
0389ペーパープラチナ(9i対応
NGNG0390デフォルトの名無しさん
NGNGやったー!
0391デフォルトの名無しさん
NGNGありがとう >>365
0392デフォルトの名無しさん
NGNG「香」が「ヤ」で「具師」が「シ」?
「香具」が「ヤ」で「師」が「シ」?
0393デフォルトの名無しさん
NGNGそんなことに疑問をもつな。このカグシ野郎!
0394デフォルトの名無しさん
NGNG0395デフォルトの名無しさん
NGNG0396デフォルトの名無しさん
NGNG今、ここでは ブームに なりつつあるけど(w
0397デフォルトの名無しさん
NGNGおぉ
365降臨!!
0398デフォルトの名無しさん
NGNG0399デフォルトの名無しさん
NGNG0400デフォルトの名無しさん
NGNG0401デフォルトの名無しさん
NGNGレス番号
--------------------
365
1行が選択されました。
0402デフォルトの名無しさん
NGNGコウグシと間違ったなら判るけど・・・まあコウグシも正しい読み方だが
0403デフォルトの名無しさん
NGNG>>401
ワラタ
0404402
NGNG0405デフォルトの名無しさん
NGNGX
∠ ̄\∩
|/゚U゚|丿
〜(`二⊃
( ヽ/
ノ>ノ
UU
0406デフォルトの名無しさん
NGNG>まあコウグシも正しい読み方だが
コウグシなんていう読み方ないぞ。
あったらオレが「カグシ」だが(ワラ
逆に「かぐし」をATOK15で変換すると
ヤシの誤読と出た(フラ
まぁ、おもろいのは香具師=厨房の使い方
なんだがな。だからどうみてもネタじゃ
ないだろう。
さては402=404=365か
365素直に出てこい、折れたちは待ってるゾイ
0407デフォルトの名無しさん
NGNG> コウグシなんていう読み方ないぞ。
「こうぐし」は、一応正しい読み方だよ。
と言うことで、
insert into 2ch (レス番, 読み) values(402, 'カグシ');
しとくね。
0408402
NGNGいちおう自分でも
http://www5.ocn.ne.jp/~tango/jisyo_file/yashi.htm
http://dictionary.goo.ne.jp/cgi-bin/dict_search.cgi?MT=%B9%E1%B6%F1%BB%D5&sw=2
0409デフォルトの名無しさん
NGNG漏れがホントにカグシだった。。。
0410デフォルトの名無しさん
NGNG0411デフォルトの名無しさん
NGNG読み方はカグシで
各板で使って広めよう。最初はここと同じ反応でバカにされる
だろうがな。徐々に馴染んでくるだろう。
そして、我々は新2ch用語の誕生に立ち会うのだ。
0412デフォルトの名無しさん
NGNGや、オーバーライドは無理だろ。
カグシ = 厨房ならまだ可能性があるかもしれないけど。
0413デフォルトの名無しさん
NGNG0414デフォルトの名無しさん
NGNGUnivarsal Installer使ってもゴミ残りすぎ。
レジスト消しても再インストしようとしたら前のSID名とか残ってるしよ!
Windows入れるよりたちが悪いな。
0415デフォルトの名無しさん
NGNG知るかよ。スレ違いもはなはだしい。
0416デフォルトの名無しさん
NGNGそんな SQLは ありません(w
0417デフォルトの名無しさん
NGNGレジストリのサービスの箇所でSIDのキー
を本当に消したか?
このカグシ野郎。
0418デフォルトの名無しさん
NGNGレジストリの中を検索して
削除するのは、もはや暗黙の了解となってるのだよ。
このカグシ野郎が!
0419デフォルトの名無しさん
NGNG0420デフォルトの名無しさん
NGNG違います。香具師=厨房 だと 思っているカグシがいるスレです。
わかったかこのカグシ野郎
0421デフォルトの名無しさん
NGNGキタ-----------------------!
0422デフォルトの名無しさん
NGNG0423デフォルトの名無しさん
NGNG疫病とか、貧乏とか、そっち系の。
0424デフォルトの名無しさん
NGNG/ ̄\ / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
─( ゚ ∀ ゚ )< カグシカグシ!
\_/ \_________
/ │ \
∩ ∧ ∧ / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
 ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄\∩ ∧ ∧ \( ゚∀゚)< かぐしかぐしかぐし!
かぐし〜〜〜! >( ゚∀゚ )/ | / \__________
________/ | 〈 | |
/ /\_」 / /\」
 ̄ / /
0425デフォルトの名無しさん
NGNG神様にお願いするときは、神様を指定しないとダメなのね(w
貧乏神に 幸せにしてくださいと 願ってもかなえてくれるわけないよなぁ(w
つーか、神は 複数いねぇけどよ(w
0426デフォルトの名無しさん
NGNG何言ってるのか不明。
独り言なのか?
かぐしage
0427デフォルトの名無しさん
NGNG0428デフォルトの名無しさん
NGNG0429デフォルトの名無しさん
NGNGヴァカがいるスレはここですか?
0430デフォルトの名無しさん
NGNG0431デフォルトの名無しさん
NGNGヴァカではなく、カグシがいるスレです。
0432デフォルトの名無しさん
NGNG-+-
1|a
2|(null)
3|c
というテーブル1と
A|C
-+-
1|d
2|e
3|f
というテーブル2があって、AとBを得たいのですが、Bが(null)だった場合テーブル2のCからAが同じレコードのCを取ってきて、
それをフェッチでだらだら処理したいのです。
selectにifnullとかいうのを使うととって来れそうなのですが、別テーブルにあるレコードの参照が分かりません。
select A,ifnull(B,C) from 1,2;
とかやったらAのフィールドが被ってるじゃねえかよ、ゴルァと怒られてしまいました。
多分、AやB,Cをどのテーブルからという指定ができればいいと思うんですが、どうやったらいいですか?
下らない質問をするカグシと思わずに、どうぞご教授下さい。
0433デフォルトの名無しさん
NGNGで解決しました。いや、解決かどうかは分かりませんが、欲しいデータは取れました。
これであってますか?
0434デフォルトの名無しさん
NGNG0435!=710 だけど...
NGNGAccess は ifnull() 使えないみたいなので、動くかどうかは試してないけど...
select テーブル1.A,ifnull(テーブル1.B, テーブル2.C) AS B from テーブル1 left join テーブル2 on テーブル1.A = テーブル2.A;
0436デフォルトの名無しさん
NGNG0437デフォルトの名無しさん
NGNGなんとなく外部結合にしなくてもいいような気がするけど
2.Cのとこでコケるか。あってるんじゃないでしょうか
曖昧なカグシですまん
0438デフォルトの名無しさん
NGNGselect '1' A, 'a' B from dual table_a
union all
select '2' A, 'e' B from dual table_a
union all
select '3' A, 'c' B from dual table_a;
で万事解決だ。よろこべ>>432よ。
0439デフォルトの名無しさん
NGNGMySQLです。DBS書かないダメなカグシでしたね。
>>438
すみません。今週末から始めたばっかりなので、理解できません。
0440デフォルトの名無しさん
NGNG>>438 は、ネタのくせに sage もできない厨房だから、無視しとけ。
0441デフォルトの名無しさん
NGNGカグシさんはどこですか?
0442デフォルトの名無しさん
NGNG0443山太郎
NGNG0444
NGNG0445デフォルトの名無しさん
NGNG0446
NGNG0447デフォルトの名無しさん
NGNG0448デフォルトの名無しさん
NGNG2ch
where
kakikomi like '%ガクシ%' ;
commit;
0449
NGNG2000/10/22
2000/10/23
2001/10/21
2001/10/22
2001/10/23
2002/10/21
2002/10/22
2002/10/23
↑こういうデータ(Date型)の中から
2000、2001、2002って抽出したいんですけど
どうやればいいのでしょうか?
0450
NGNG>>449
SELECT LEFT(Data, 4) from kagushi;
0451449
NGNGありがとうございます。
上手くいきませんでした。
やりたいことは、何年のデータがあるのかを知りたいのです。
2000、2001,2002の3っつがわかればいいのですが。
0452デフォルトの名無しさん
NGNGSELECT DISTINCT YEAR(myDateColumn)
FROM MYTABLE
ORDER BY YEAR(myDateColumn)
おまえの環境はわからんが、だいたいの実装に年だけを取得する関数があるはずだ。
0453デフォルトの名無しさん
NGNGここの Dataってのは、
2000/10/21
2000/10/22
2000/10/23
2001/10/21
2001/10/22
2001/10/23
2002/10/21
2002/10/22
2002/10/23
が 入った 項目名のことだぜ。
ま、 重複しているのを なくすってならば、GROUP BY だっけかな、
を つけたせば OK だ ちょんまげ〜
0455デフォルトの名無しさん
NGNGset 名前='カグシ'
where レス in (450,453)
0456デフォルトの名無しさん
NGNG2>where "名前" = 'カグシ';
レス 名前
---- ------
438 カグシ
450 カグシ
453 カグシ
3 件が選択されました
SQL>
0457デフォルトの名無しさん
NGNG0458デフォルトの名無しさん
NGNG(レス番, 話題)
VALUES
(458, 'カグシネタはそろそろ終わりませんか')
;
0460デフォルトの名無しさん
NGNG↓
椰子
↓
椰子からナデラ
↓
洗剤
↓
台所
↓
厨房
∴香具師≡厨房
0461デフォルトの名無しさん
NGNG0462デフォルトの名無しさん
NGNG---------------------------------------------------------------------------------
1 1 top トップページ
2 300 haiku 俳句 1
3 308 backnumber バックナンバー 2
4 304 merumaga メールマガジン 2
5 306 etc いろいろ 2
6 419 tanka 短歌 1
7 456 def かきくけこ 7
8 478 pqr さしすせそ 7
9 489 stu たちつてと 7
というテーブルがあり、
categoryname が「haiku」と一致するレコードと、
parentcategoryid が「上記レコードのcategoryid」と一致するレコード
を集めて、それを、categoryseq でソートしたいのですが、
(つまり、上記例では、2、4、3、5のレコードが抽出されるようにしたいのですが)
SQL文がわかりません。
$SQL ="SELECT * FROM CATEGORYMASTER foo WHERE CATEGORYNAME = "haiku" UNION ".
"SELECT * FROM CATEGORYMASTER bar WHERE bar.PARENTCATEGORYID=foo.CATEGORYID ORDER BY CATEGORYSEQ";
とやってみたものの、1件もひっかからず。
どうすればいいのでしょうか?
0463デフォルトの名無しさん
NGNG0464デフォルトの名無しさん
NGNGUNION
SELECT * FROM CATEGORYMASTER
WHERE PARENTCATEGORYID IN (SELECT CATEGORYID FROM CATEGORYMASTER WHERE CATEGORYNAME = "haiku")
order by categoryseq
DBMSによって、テーブル名に修飾付けたり、このままじゃORDER BYできないかも
しれないけど、大体こんな感じ。
0465デフォルトの名無しさん
NGNG0466デフォルトの名無しさん
NGNG0467デフォルトの名無しさん
NGNGその条件だと 1と6のみの ような気がするのだが。
0468教えてください〜
NGNG文字列内の改行の入ってる文を、入れたいのですが、どおしたらいいのか
わかりません。
"AAABBB"をAとBとの間に改行を入れたいのです。
"AAA
BBB"
Accessのクエリーだとできるのですが・・・
クエリーをSQLで表示させると
サンプル=テーブル名 文字列=フィールド名
UPDATE サンプル SET サンプル.文字列 = "AAA
BBB";
SQLで書き方があったら教えてください。
0469デフォルトの名無しさん
NGNGAccessだよね?
char(int n)
だか
chr(int n)
だか忘れたけど、そんなんなかったけか?
0470教えてください〜
NGNG0471デフォルトの名無しさん
NGNGChr(13) & Chr(10)
Chr(13)はキャリッジリターン
Chr(10)はラインフィード
0472教えてください〜
NGNGッて感じでいいんでしょうか?
とにかく、試してみます。
ありがとうございます。
0473カグシのみなさん教えてください〜
NGNGSELECTで空白の列を出力させたいのですが、方法が判りません。
select 列名1,列名2,空白の列,列名3 from テーブル1
列名1 列名2 空白の列 列名3
----- ---- -------- ------
カグシ ヤシ コウグシ
と出力させたいのです。
テーブル1には,空白の列は無いです。列は作成することが出来ません。。。
dualやなんかを使うのかなぁ?などと考えたのですが、
判りませんでした。
ご教授宜しくお願いします。
0474カグシのみなさん教えてください〜
NGNG列名1 列名2 空白の列 列名3
----- ---- -------- ------
カグシ ヤシ コウグシ
と出力させたいの間違いです。
よるしく
0475デフォルトの名無しさん
NGNG0476カグシのみなさん教えてください〜
NGNG475サン アリガトン
コンナニカンタンダタノカヨ、、、、デキタヨママン
475サン アリガトン
コレデイエニカエレルヨン
475サン アリガトン
0477デフォルトの名無しさん
NGNG0478デフォルトの名無しさん
NGNGビミョ〜〜〜。全くの初心者なら、マジでもおかしくはない。
結構参考書とかに載ってなかったりするし。
0479デフォルトの名無しさん
NGNG0480デフォルトの名無しさん
NGNG基礎の本から読んだ方がいいと思う
0481Gunball
NGNGたとえばUNIXで造ったC言語の年間売上データをSQLを使ってDBに落として
そのデータをSQL使って月毎の集計を出す。というのはどのようにすれば
良いのでしょうか?
0482デフォルトの名無しさん
NGNG>C言語の年間売上データ
コンパイラでも作ってるんですか?
0483Gunball
NGNG0484Gunball
NGNG手動ならできるんだけど。
0485デフォルトの名無しさん
NGNG全自動のプログラマを想像してちょっとワラタ。
0486デフォルトの名無しさん
NGNGとりあえず、元データを何で作ったかは関係ない。
テキストデータなら適当なローダで入れたら
適当なスクリプトと自動起動で全自動にもなるだろ。
> そのデータをSQL使って月毎の集計を出す。
SQLは固有名詞じゃないよ。
0487デフォルトの名無しさん
NGNG手動でやってる事をプログラムにさせればいい、としか言えないぞ。
0488デフォルトの名無しさん
NGNGたぶん、少なくてもカラムにい「月と売上額」あるべ
そしたらグループと集計関数でいくとおもわれ
SQLの基本中の基本だから
基礎の本から読んだ方がいいと思われ
0489デフォルトの名無しさん
NGNG0490デフォルトの名無しさん
NGNGとりあえず金を巻き上げるのにいい口実だから使ってるんだろ
0491デフォルトの名無しさん
NGNGほしいときはどうやったらいいでしょうか?
テーブルの内容は日曜日とか土曜日とか祝日とかが
飛び飛びであいています。
多分datetimeに降順をしていして何かをするんだと思うんですが
その先が調べられなかったんでよろしくおねがいします。
0492デフォルトの名無しさん
NGNGいや、それに応じた適切なデータ構造を考えたり、それをどう保存、読込みすれば
いいか判らないからというのが真実。
0493デフォルトの名無しさん
NGNGある日付〜ある日付-10日の条件で抽出すりゃ一発じゃん。
0494デフォルトの名無しさん
NGNG0495491
NGNGレスどうもです。
質問をちょっと間違えました。
10日分でなく10件分のレコードがほしいんです。
休みがあるから-10日だと数件少ない状態でとれるのでこまってます。
0496初心子
NGNGoracleでSQL文を発行してtableやviewの構成を取得することは
できるのでしょうか?
0497デフォルトの名無しさん
NGNG0498初心子
NGNG0499デフォルトの名無しさん
NGNGで、それに人件費掛けるくらいならDBのパッケージと
一山いくらのDB技術者を買ったほうが安上がり…と。
0500デフォルトの名無しさん
NGNG0501デフォルトの名無しさん
NGNGv$columnsとかいう感じのディクショナリがあるんじゃね?
DICT表でも検索かけろや
0502デフォルトの名無しさん
NGNGデータベースにもよるが
ORACLEなら select * from テーブル where rownum <= 10 order by 日付 desc
SQL鯖なら select top 10 * from テーブル order by 日付 desc
こんな感じかな(未確認)
0503デフォルトの名無しさん
NGNGその年間売上データに対応するスキーマ作って、データパースして、INSERTする。
カレンダー用のテーブルを作ってJOINするとか、月を取り出す関数使うとかして、
GROUP BYでまとめて、SELECT集計関数使って終わり。
ていうかこんなこと聞くな。氏ね。
0504491
NGNGありがとうございます。できますた。
0505デフォルトの名無しさん
NGNG{ALL|USER|DBA}_TAB_COLUMNS
内容はリファレンスマニュアル嫁
0506デフォルトの名無しさん
NGNGid
name
table2
id
date_from 期間はじめ
date_to 期間終わり
というテーブルで、
任意の日付がtable2の期間に引っかかる場合のtable1.name
を求めるにはどうしたらよいですか?
table1のidについてtable2で複数の期間が設定されています。
0507デフォルトの名無しさん
NGNGふつうに考えれば
select table1.name
from table1, table2
where table1.id = table2.id
and table2.date_from >= 任意の日付
and table2.date_to <= 任意の日付
じゃないのか?
この定義だけ見ていると
テーブルを分けてる意味がワカランが
0508デフォルトの名無しさん
NGNGレスありがとうございます。
テーブルの構成はたとえば
table1
id name
a mona
b giko
table2
id from to
a 2002-1-1 2002-1-3
a 2003-1-1 2003-2-2
b 2002-10-1 2002-11-1
のようになっています。
0509デフォルトの名無しさん
NGNGうまくできました。ありがとうございます。
0510507
NGNGますます不思議
table1
id
name
date_from
date_to
で良いやん
難しく考えすぎやで
0511ししょんしゃ
NGNG0512デフォルトの名無しさん
NGNG永続化する必要の無いデータなら、CGIで計算しよう。
0513デフォルトの名無しさん
NGNGSQLで1発で検索して、プログラムでは表示するだけにする方が
すっきり簡単
CGIって何の言語でしょ?Perlかな?
一度の表示件数にも、よってしまいますが
1レコードずつ計算させるのは非効率です
用はしたい事によるけれど
0514デフォルトの名無しさん
NGNG>>510
そんなこと無いんじゃないかな
idがdate_fromとdate_toに従属しているから
table2は
date_from
date_to
id
として、date_fromとdate_toが主キーでしょうね
0515デフォルトの名無しさん
NGNGORACLEの方はこうじゃないとダメじゃなかった?
select * from
(select * from テーブル order by 日付 desc)
where rownum <= 10
0517ししょんしゃ
NGNG>>513
レスどうもです。
永続化しないデータならCGIでの計算でおーけー。
ただ表示件数やらによってはsqlでやってしまったほうが効率的、ということですね。
臨機応変にと。
言語はPerlでございます。
0519デフォルトの名無しさん
NGNG9だから勝手にDB立ち上がってメモり131MBも喰ってるし。。。。
table作ろうにも何のtable作ろうか小一時間迷った結果、MXで落としたエロゲリストしか思いつかなかった。
もちろんtableひとつでリレーションも糞もない。excelで十分まかなえる。w
お前ら家でOracleどう使ってる?
0520デフォルトの名無しさん
NGNG0521デフォルトの名無しさん
NGNG参考書に
「データベースの作成にはMySQLが起動した状態で
コマンドプロンプトから次のようにします。」
cd c:\mysql\bin
mysqladmin create examdb
とあるのですが、CREATE DATEBASE failed; error:
とかで先に進めないんです。。誰かこんな糞厨に手をさしのべて頂けないでしょうか。。
0522DB歴2日
NGNGDELETE FROM tbl_name WHERE 3>0;
みたいな範囲指定じゃなく、0と3を削除 みたいな。
0523デフォルトの名無しさん
NGNG0524デフォルトの名無しさん
NGNG正規化ってアフォの一つ覚え?
0525デフォルトの名無しさん
NGNG正規化以前に>516は>514に同調している時点であふぉ。
>510
>506の「table1のidについてtable2で複数の期間が設定されています。」を
読み逃しただけだよね。
でなければやっぱりあふぉ。
>514
基本的に日時を主キーにするな。
0526デフォルトの名無しさん
NGNGあんたがアフォ?
>>514が言っていることは、第3正規形の要件にある
「主キー以外の項目に従属する項目は分離する」にあたる。
第3正規形すらもできない香具師が多い限り>>516の様な
レスも見続けることになるだろう。
0527デフォルトの名無しさん
NGNG> 基本的に日時を主キーにするな。
なんで?
0528525
NGNG主キーとは識別子なり。
つまり主キーでもってデータを識別する。
日付で何を識別するの?
逆に「なるほど」と思えるような日時を主キーにしたモデルを見てみたい。
たまにはあるだろうけどね。(オレは思いつかん)
でも>>514の「date_fromとdate_toが主キー」は明らかに間違い。
理由はいっぱいある。
例えばidの値が違うデータ(table1の別々のデータ)に対して
date_fromとdate_toの組み合わせがまったく同じ
ということがありうる。これだけでシステムは止まる。
0529デフォルトの名無しさん
NGNG主キーが識別子だという主張は初めて聞いた(笑)
> つまり主キーでもってデータを識別する。
んなことに固執するから糞なDB設計が無くならないのだが
まぁ、それはいいとして
> 逆に「なるほど」と思えるような日時を主キーにしたモデルを見てみたい。
>>514がまさしくそうでしょ
「開始日」「終了日」の対象がIDだと言える。
> 例えばidの値が違うデータ(table1の別々のデータ)に対して
> date_fromとdate_toの組み合わせがまったく同じ
> ということがありうる。これだけでシステムは止まる。
そりゃシステム要件に依るでしょ。date_fromとdate_toでユニークに
なるべきならOKでしょ。
>>506 >>508 を読む限り、要件は限定出来ない。
ユニークにならないなら、全部をキーにするかもしくはキー無しにすればよい。
つか、自分で墓穴掘ってるの気づかないかなぁ。
> 理由はいっぱいある。
一つだし。
ほかにわ?(笑)
0530510
NGNGあとで考えたら、この程度の項目数のDBってないよな(w
もっと多くの項目があり、抜粋したもだったらって納得したよ
自分が言いたかったのは
正規化って言う意味ではなく
テーブルを読むっていうか...アプローチって言うか
考え方ね!
>507の範囲指定が無ければ(JOINしただけなら)
>510の形式になるじゃん
0531デフォルトの名無しさん
NGNG少なくともAccessでは主キー=一意制約=識別子だよ。
0532デフォルトの名無しさん
NGNG主キーが識別子じゃないとは言ってないよ。
1.日時を主キーにするな
2.なんで?
3.主キーとは識別子なり。
4.そんな主張は初めて聞いた(笑)
という事です。
0533デフォルトの名無しさん
NGNGとは思うけど、少なくとも>>525の方が妥当では??
>>507の事例も、他に記述されてない要件があるかもしれないってひねくれる
事は出来るけど、普通に見たらに見たら主キーに設定するのはidが妥当で、
日付を主キーってのはちょっとおかしいし。
っつか日付を主キーはやっぱ変だよ、date型が主キーだと苦労しそうだし。
かといってchar型に日付のデータ入れた形だと今度は日付データの扱いが
面倒そうだし。
0534デフォルトの名無しさん
NGNG0535デフォルトの名無しさん
NGNG円相場やTOPIXのように
日時に対する数値を記録するテーブル。
0536506
NGNG議論がすすんでいますね。
>>506のケースは、もう少し詳しく書くと
<table1>
table1のid NOT NULL UNIQUE
name
addressなどなど...
<table2>
table2のid (key) NOT NULL UNIQUE
table1のid NOT NULL
date_from 期間はじめ
date_to 期間終わり
というテーブルです。例示の際にちょっと省きすぎたかもしれません。
少なくともこの場合は日付を主キーにはできないっすね。違う人が同じ期間
という場合もありますから。
ケースによっては日付をキーにします。その場合はdate型が主キーでも苦労しないです。
0537デフォルトの名無しさん
NGNG>っつか日付を主キーはやっぱ変だよ、date型が主キーだと苦労しそうだし。
変じゃない。「苦労しそうだし」って思いこみ。
例えばどんな苦労するの?
別に苦労なんてない、文字型も日付型も扱いは全く一緒。
そんな思いこみや根拠のない迷信がDB設計のじゃまになる
0538デフォルトの名無しさん
NGNGよろしくお願いします。
0539デフォルトの名無しさん
NGNG「話を聞いた」だけ?
「そのままでは日本語が使えない」ことを確認してみた?
0540525
NGNGなるほど。
オレが言いたいのは*何*でもってデータを識別するかということ。
>>537
頼むから生年月日で社員を識別すんなよ。(ちと煽り)
基本的に値が変わるかもしれないものを主キーにしてはいけない。
データの日付が変わったとき、普通はUPDATEをかける。
しかし日付が主キーならDELETE→INSERTをかける必要がある。
このデータに従属するテーブルがある場合、それらのデータも
DELETE→INSERTを行う必要がある。
>>533
日付でデータを識別しなければいけないときは日付が主キーになりうる。
(完全否定しているわけじゃないよ。)
date型かchar型というのは関係ない。
「苦労しそう」とか「面倒そう」というのも関係ない。
せっかくフォローしてくれたのにごめんな。
0541525
NGNGなるほど。
要件によっては<table2>の主キーが複合キーになったり
<table1>と<table2>の間に関係テーブルが必要だったり
するかもしれませんが、一応納得です。
(この辺は536さんのみぞ知るですから)
>例示の際にちょっと省きすぎたかもしれません。
省いていなかったら>>507で全て終わってましたね。(わら
0542デフォルトの名無しさん
NGNG0543デフォルトの名無しさん
NGNG0544デフォルトの名無しさん
NGNGつーか常識だろ(w
0545506
NGNG第3正規化までして、また戻るとか。
0547デフォルトの名無しさん
NGNG俺からすれば、ハードウェアに金かけろって感じだが
0548デフォルトの名無しさん
NGNG正規形としては正しいが、顧客の要件を満たせないとき。
0549デフォルトの名無しさん
NGNGハードにかけても限界があるよ!
DB定義とSQL文の書き方で
数倍のパフォーマンスが変わる
件数が増えれば、顕著にあらわれる
まぁ一度、膨大な件数のデータを扱ってみたら
正規化だけが正しいと思えなくなるから
0550
NGNGSELECT name1, adress1 FORM Table1
0552
NGNGこいつも原因だよきっと?
一応・・・
○ address1
× adress1
0553506
NGNG先輩には、パフォーマンスよりも論理的整合性。メンテナンスのしやすさが大切だ
と教わっています。
それにまあ、超高負荷な案件なんて、受注したことないですから。
上の方で「正規化しない」と書いたのは、ちょっといきがってみただけです。
0554U ◆CZtFsGiu0c
NGNGLFはセル内の改行コードだから当然そうなる。コードの詳細がわからないけど、
cells(1,1).Value = "aaa"
cells(2,1).Value = "bbb"
となるようにコーディングできない? でなきゃ、
S = "aaa" & vbCr & vbLF & "bbb"
でやってみたら?(試してないけど)
0555U ◆CZtFsGiu0c
NGNG0556デフォルトの名無しさん
NGNGSQL Server7.0/2000 です。
クロス集計について。
Name Day NUM
------ --------- -----
A 1001 2
A 1009 1
A 1001 1
B 1001 4
A 1001 12
B 1003 6
C 1005 22
B 1003 16
このようなデータがあり、(続く)
0557デフォルトの名無しさん
NGNGselect Name,
sum(case WHEN Day=1001 then NUM END) as Day1001,
sum(case WHEN Day=1002 then NUM END) as Day1002,
・・・
sum(case WHEN Day=1009 then NUM END) as Day1009
from table1
group by Name
order by Name
のようにしています。
実は、Name が数百種類、Day も重複なしで100日分位になるのですが、
その場合やはり、
sum(case WHEN Day=1001 then NUM END) as Day1001,
の行を100個書くしかないのでしょうか。
あるいは、他にクロス集計の方法はありますか?
0558
NGNGずっと早いと思うが・・ 悩む時間も無駄だと思うが・・・
0559557
NGNG例えば一時テーブルはどういう作り方にしたらよいですか?
ちなみに結果として欲しいのは集計の1部とかではなく、
クロス集計の表(CSV)なんです。
0560デフォルトの名無しさん
NGNG0561デフォルトの名無しさん
NGNG0562デフォルトの名無しさん
NGNG一時テーブルは、create table ##table1
横展開するには100個かくしない無いと思われ
って言うか、一時テーブル作成してもね
0563557
NGNGあ、やはり100個書きますか、そうですよね。
ありがとうございます。
0564デフォルトの名無しさん
NGNGreturns(NowDate date)
as
begin
SELECT MAX(CURRENT_TIMESTAMP)
FROM Table
Into :NowDate;
suspend;
end
InterBaseで現在の時間を返すストアドなんだけど
ERROR: DATE data type is now called TIMESTAMP
みたいなErrorが・・・
なぜ?
0565デフォルトの名無しさん
NGNG0566デフォルトの名無しさん
NGNGマルチ死ね。
0567デフォルトの名無しさん
NGNGInterBaseは知らないので間違ってるかもしれないっすけど
Intoの記述する場所違うくねぇ?
>>565
基礎編の本を読みましょう
たぶん知らないことが、たくさん書いてありますよ
0568だいすけ ◆P0//Gikoow
NGNGなお、当方びんぼーなため、Oracleとかの有料なのは、買えません。。。
0569デフォルトの名無しさん
NGNGSQL Server 2000 において
データ変換サービスを使ってDBの内容をcsvファイルに書き出すことができますが
その際、スケジュール設定で実行のタイミングを時間で設定することはできるのですが、
DBが変更、追加されたタイミングでcsvファイルに書き出すように設定できないでしょうか?
0570569
NGNGお騒がせさまでした。
0571デフォルトの名無しさん
NGNGどのSQLが...って事なら、
それぞれ方言みたいのがあるものの
どれが一番良いってのないっす
覚えて仕事にするって観点から考えると
ORACLEは、いろいろなOSや開発言語で
使えるため、一番柔軟だと思うっす
SQL鯖&MSDEは、やはりWinとVisual製品に
なってしまいがちです
悪くはないが...以下自粛
PostgreSQLやMySQLは、
フリー=安い=開発費削減=短期間
って事で、以外と厳しいかも
なにか覚えてからの方が良いと思うっす
0572デフォルトの名無しさん
NGNGOracleも試用目的とかなら、無料で使えるよ。
http://otn.oracle.co.jp/
0573568=だいすけ ◆P0//Gikoow
NGNG皆さんの意見をさんこうに、ひとおおり、
Oracle体験版も含めて、かいつまんでみたいと思います、
0574大失敗
NGNG誤ってローカルのアドミニストレーターの権限を全て
外していまい、DBに対して何もできなくなってしまいました。
こういった場合、どのようにすればアドミニストレータに権限を復活
できるのでしょうか?
既に作成済みであったユーザには特殊な権限は付加してなかったので
ログインユーザを変えてもダメでした。
リモート操作するソフトがあるようなのですが、
そのソフトでSAというアカウントでログインし、アドミンを復活するという
手もあるようですが、どのソフトを使えばよいのかわかりません。
また、その他に簡単にアドミンに権限を復活させる方法がありましたら、
ご教授お願いします。
0575デフォルトの名無しさん
NGNGjava上でJDBC接続してACCESSのデータをオラクルのPL/SQL
みたいに表示できるクラス作ったぜ!
ACCESSなのにdescも可能。
でも見せてやらない。
0576デフォルトの名無しさん
NGNGdescか、昔やりたかったんだけど、なんかできなかったような。。
JDBC2.0でスキーマ定義を取り出すのってどうやってやるの?
0577デフォルトの名無しさん
NGNGrs.EOFがtrueかfalseかでわかるんですけど、
ある名前のテーブルがあるかどうかを確かめる命令はあるでしょうか?
VBでもなんでもいいですのでお願いします。
0578デフォルトの名無しさん
NGNGっつーかDBは何だよw
0579デフォルトの名無しさん
NGNGしすてむてーぶるからせれくとしる
0580577
NGNGシステムテーブルについてはよく知りません。
0581577
NGNGというような関数があると仮定して、
その名前のテーブルが存在すればTrueが帰ってくるとたすかります。
0582577
NGNGを実行してエラーが返ってきたらそういう名前のテーブルは無いと判断する
という裏技も考えました。
0583577
NGNG0584デフォルトの名無しさん
NGNGつーかこんなFAQ、探せば幾らでも出てくるだろうに。
0585デフォルトの名無しさん
NGNGそりゃ、すごいクラスを
作ったな!!
>>576
DatabaseMetaData
インターフェースを使うだけだ。
アフォでもできる。
0586577
NGNG0587577
NGNGADOを使ったアプリケーションをユーザに配布すると、
ユーザがわざわざコントロールパネルのODBCの設定をしなければなりません。
このODBCの設定を自動でおこなうプログラムの作成は可能でしょうか?
0588デフォルトの名無しさん
NGNG可能だが、その前に「接続文字列」を調べれ。
つぅか、君の会社ではいつもそんな糞な配布の仕方してるのか?
0589577
NGNG接続文字列しらべてみます。
0590デフォルトの名無しさん
NGNGせっかくだから、OLE DB プロバイダというのも検索してみな。
ADO 使うんだったら ODBC はポイしなさい。
0591577
NGNG0592デフォルトの名無しさん
NGNGTABLE_AのFIELD1
---------------
(・∀・)
(・∀・)ホー
(・∀・)カエレ
TABLE_BのFIELD2
---------------
AAA(・∀・)AAA
AAA(・∀・)AAA
AAA(・∀・)AAA
AAA(・∀・)ホーAAA
AAA(・∀・)カエレAAA
これで結果が
------------------------
(・∀・) 3レコード
(・∀・)ホー 1レコード
(・∀・)カエレ 1レコード
って結果を得るには、どうSQLを書けば良いのでしょうか。
0593デフォルトの名無しさん
NGNG0594デフォルトの名無しさん
NGNGテーブル作成するときに 重複ありのキー設定をしたいんだけど
クリエイト文の後ろに
PRIMARY KEY(項目A)
をつけたせばいいだけなんでしょうか?
0595やっぱり最高
NGNG理由その2:
SQLが嫌いです。(というかSQLの存在意義って?)
SQLというのはRDBを扱うための専用言語のようなものですよね。
さらに埋め込みSQLというものまであります。
埋め込みSQLはCやVBなどのプログラム中にSQL文を直接書けて、しかも変数
にselectの結果を代入したりできるという、話だけ聞くと非常に便利そうな機能に
見えます。
機能というよりメタ言語ですね。(笑)
その埋め込みSQLですが、はっきり言って設計した人の神経を見たいです。
そもそもSQL自体まるでナンセンスな言語だと思っていましたが、埋め込みSQL
はさらに輪をかけて。。。
ちょっと凝ったことをしようと思うとすぐ壁にぶち当たります。
誰が考えたか知りませんが、「お願いです。今後2度とプログラミング言語を設計
しないでください。世のため人のために。」(大笑)
0596デフォルトの名無しさん
NGNG面白いのみつけてきたね。
SQLみたいなリレーションのシステムがないとDBからデータ選ぶ時
大変だと思うんだがなぁ・・・・・・・・・・・
一枚一枚独立した表じゃ、昔の紙ベースでファイリングしたデータと全くかわらん。
埋め込みだって値が変わったら自動にSQL文発行してくれて便利だと思うんだけどなぁ
他人事だからどうでもいいけど。
0597デフォルトの名無しさん
NGNGなんだかんだ言って世の中こういう人の方がおおいからな。
未だに年間の顧客データとかを紙に書いて棚いっぱいに入れてあるところがたくさんだ。
世の中そんなもんだ。
0598デフォルトの名無しさん
NGNG0599デフォルトの名無しさん
NGNG0600デフォルトの名無しさん
NGNGコピペにマジレスするのもなんだが、自分が理解できない、使いこなせない
ものを否定する香具師って、貧しい心の持ち主だね。
(ある意味、日本人的か)
# むかし、ピカソをダメ呼ばわりしたバカ教師がいたとか・・・。
0601デフォルトの名無しさん
NGNGでもそんなバカ教師でも、ピカソが分からないのに
分かったふりしてるヤシよりは正直な分だけマシという罠。
0602デフォルトの名無しさん
NGNG私の場合、スタート時点からデータベース≒SQLっていう状況なのでよくわかんないのですが。
0603ワラタヨ
NGNG472 名前:コスモス 投稿日:02/11/20 12:01
まとめ:
Oracle以外データベース製品はたくさんあります。
にもかかわらずなぜみんなOracleなのか?
Informix、DB2などなど。あ、SQL Serverは論外ですよ。(笑)
なぜこれらの製品はそんなにシェアがないのか?
最近思うのは、もしかしたらこれらの製品はOracleよりももっとひどいのかも
しれないと。。。(涙)
データベース業界ではOracleが一番使いやすく性能も出る製品なのだと思い
ます。
データベース業界はまだまだ未成熟な業界だと思います。
これを読んで、「そんなことないよ。Oracleっていいデータベースだよ」と思った
あなたは、Oracleに洗脳されているだけではないでしょうか。
0604デフォルトの名無しさん
NGNG0605デフォルトの名無しさん
NGNG0606デフォルトの名無しさん
NGNG凄い世界の住人ですね。
こういう人はストアドを書くどころかDOSコマンドすらもいじれないでしょうな。
0607デフォルトの名無しさんデフォルトの名無しさん
NGNGテーブル1
ID|機種名
1 2ch
2 ふたば
テーブル2
ID|枝番|台数|種類ID
1 1 10 2
1 2 20 3
2 1 10 2
2 2 30 4
2 3 40 1
このとき、
ID|機種名|台数1|種類ID1|台数2|種類ID2|台数3|種類ID3
1 2ch 10 2 20 3 0 0
2 ふたば 10 2 30 4 40 1
というようにテーブルを結合してデータを一度で取り出せるSQL文はどう書けばいいのでしょうか?
0608607
NGNG0609デフォルトの名無しさん
NGNGSELECT
T1.ID,
T1.機種名,
T2-1.台数 AS 台数1,
T2-1.機種ID AS 機種ID1,
T2-2.台数 AS 台数2,
T2-2.機種ID AS 機種ID2,
T2-3.台数 AS 台数3,
T2-3.機種ID AS 機種ID3
FROM
テーブル1 AS T1,
(SELECT ID,台数,種類ID テーブル2 WHERE 枝番 = 1) AS T2-1,
(SELECT ID,台数,種類ID テーブル2 WHERE 枝番 = 2) AS T2-2,
(SELECT ID,台数,種類ID テーブル2 WHERE 枝番 = 3) AS T2-3
WHERE
T1.ID = T2-1.ID (+)
AND T1.ID = T2-2.ID (+)
AND T1.ID = T2-3.ID (+)
for ORACLE 未検証
たぶん行くと思うけど。
ちなみに環境ぐらい書こうね
0610607
NGNG神!ありがとうございました!!明日会社で試してみます。
ところで、初歩的なことかもしれませんが(+)はどういう意味でしょうか?
0611デフォルトの名無しさん
NGNG臍です。
0612607
NGNG「(+) SQL」や「SQL へそ」でググッても情報が見つからない。。。
0613デフォルトの名無しさん
NGNGVB+oo4oでDBアプリを開発していますが、SQL文を発行する関数では、
読み込みでも書き込みでも必ず下記の処理を行っています。
書き込みはともかく、読み込みでトランザクションの開始・終了、
コミットは意味ないですよね?
トランザクション開始
OraDynasetの作成
〜処理
Close Dynaset
Commit
トランザクション終了
0614デフォルトの名無しさん
NGNGハゲシクワラタ
http://homepage2.nifty.com/sak/w_sak3/doc/sysbrd/sq_kj04_1.htm
この辺見てみ
0616デフォルトの名無しさん
NGNG(2ちゃんねるは、投稿文書にタグが使えないのがちょっと不便)
0617デフォルトの名無しさん
NGNG0618デフォルトの名無しさん
NGNG仕様書(テーブル設計書)を見れ
0619デフォルトの名無しさん
NGNGへ?そ うなんだ?! (チト苦しい)
>>614
外部結合と臍と何の関係が・・・?
(とトボケてみるテスト)
0620デフォルトの名無しさん
NGNGしすてむてーぶるからせれくとしる
0621デフォルトの名無しさん
NGNGこのSQLを最大速度で結果を取得できるよう変更したいのですが、どのようにすればよいでしょうか?
環境はSQLSERVERです。
0622デフォルトの名無しさん
NGNG0623デフォルトの名無しさん
NGNG普通に考えたら別の方法も、これしか無いべ
SELECT a.ID FROM TABLE_A a, TABLE_B b
WHERE (a.ID = b.ID AND b.NAME = 'HOGE')
OR a.ID = ''99999999'
当然インデックスは張ってるよだろうし
実行計画(測定プラン)をして見るとよろし
0624デフォルトの名無しさん
NGNGありがとうございます。それもやってみます。
現在の最高速は
SELECT ID FROM TABLE_A WHERE ID IN (SELECT '99999999' UNION SELECT ID FROM TABLE_B WHER NAME = 'HOGE');
です。
しかし、データの件数などによって変わるものなんですね。
0625デフォルトの名無しさん
NGNGこのパターンは、INの中の件数が増えれば増えるほど
遅くなると思うなぁ?
JOINする方が、キャッシュが効けば早くなりそうな?
(あくまでも予想)
0626デフォルトの名無しさん
NGNG一応INの中の件数は1,2件の予定です。
0627デフォルトの名無しさん
NGNG教えていただけないでしょうか?
お願いします
0628デフォルトの名無しさん
NGNG0629デフォルトの名無しさん
NGNG本屋に逝きなさい。
0630デフォルトの名無しさん
NGNGどんなSQLになりますか?
0631デフォルトの名無しさん
NGNGhttp://www.sqlpowerpage.co.jp/
リンク貼ってやるから探せ!
0632デフォルトの名無しさん
NGNG的確なコメントが付くと思ってるDQNの脳細胞はどんな構造なのか調べたいのですが、
どんなSQLになりますか?
環境は下記の通りです。
CPU : Panchium 20 60GHz
OS : Windos Z SP-12
メモリ : 32GB
DBMS : Micr○s○ft DQN Server 2002 SP10
0633デフォルトの名無しさん
NGNGDROP DQN;
Commit;
-- DQNは逝ってよし。(-_-;
0634デフォルトの名無しさん
NGNGテーブル(FROM)から書くのが論理的で、
認識しやすいと思うのだが...
0635デフォルトの名無しさん
NGNG0636デフォルトの名無しさん
NGNG> SELECT文はなんでカラム(SELECT)から書くのか?
> テーブル(FROM)から書くのが論理的で、
> 認識しやすいと思うのだが...
先頭の字句だけで「選択」、「更新」、「追加」、「削除」の種別が
判別できるので、人間にも構文解析機にも優しい作りだと思うが。
0637デフォルトの名無しさん
NGNG分かりやすいかもしれん。
頭では、どのテーブルのどのカラムかって考えるよなぁ。
コードを見るときFROMのテーブルから見るときもある。
英語が元だから
テーブルにあるリンゴじゃなく
apples on the table
といっしょだろ。
まぁ、そういうものの見方はずっと
持ち続けてくれ。
>>636はあまり理由になってないな。
0638デフォルトの名無しさん
NGNG>確かに日本人からみたら
また私は外国人ですと言いたげな妙な日本人が現れた。
0639デフォルトの名無しさん
NGNGなんと、5000円!!
アクセスしてみて!
http://www.bidders.co.jp/item/12162690
0640デフォルトの名無しさん
NGNG> また私は外国人ですと言いたげな妙な日本人が現れた。
>>637は宇宙人だと思うが?
0641デフォルトの名無しさん
NGNG>>637の文面からどこから
そんな解釈ができるんだ?
>確かに日本人からみたらって
確かに(オレ等)日本人からみたら
ってことだろ。
きちんとよぬ!
あとそういうものの見方とはっていうのは
常に些細なことでも疑問を持ちながら
いけということだ。
この業界は知ったかが多すぎるからな。
0642デフォルトの名無しさん
NGNG宇宙人ハケーン
0643デフォルトの名無しさん
NGNG特にエイリアス切った時なんか、
FROM句から書くこともある。
やっぱ日本人だからかなぁ。
0644634
NGNGそうだよな、漏れ以外にそう思っている
香具師がいて良かったよ。
>>643 禿胴!!
638=640=642
だろ。ちゃちいれられた
だけで、ワンパタ-ソな返し、
見苦しいな。
0645デフォルトの名無しさん
NGNG0646デフォルトの名無しさん
NGNG確かに日本人からみたら、テーブルから書いた方が(私は日本人を超越したプログラマだからそうでもないがまぁお前らパンピーには)分かりやすいかもしれん。
0647デフォルトの名無しさん
NGNG0648デフォルトの名無しさん
NGNG0649デフォルトの名無しさん
NGNG書いた方が分かりやすいんじゃないか?
>>643の言うとおり、テーブルのエイリアス
が先にきて、後で宣言するなんて読みにくいし
書きにくい。
ベタだがSELECT FROMじゃなく
SELECT TABLE *** COLUMNS ***
の方が直感的な気がする。
こればっかりは、しょうがないし
ここでほざいていても仕方がないことだが。
0650デフォルトの名無しさん
NGNG気分的には今のままでいいんだが、特に根拠はないな
0651デフォルトの名無しさん
NGNGいや、現在の構文をひっくり返しただけ。
SELECT
TABLES emp e,sales s
COLUMNS s.code ,e.name
WHERE s.id = e.id
SQL92の書き方でもTABLESにいれればいい。
0652デフォルトの名無しさん
NGNGデータ操作言語を記述することなく、脳内の思考通りに動作する、"デムパ Driven Database"が
実現できたら便利だと思うんだが、どうよ。
0653デフォルトの名無しさん
NGNG現状の構文は扱いやすいのだが?
0654デフォルトの名無しさん
NGNGID|項目1|項目2|項目3
001 0 0 0
001 1 0 0
002 0 0 0
002 0 0 0
003 0 0 1
oracle8iにて以下の条件で抽出するにはどのようなSQLでしょうか?
・項目がすべて0のIDを抽出する。
・ID=001は、項目1が'1'のレコードもあるので抽出しない。
・ID=002は、1レコードだけ(重複せずに)抽出する。
以上、なにかしらヒントでもいいんでよろしくお願いします。。
0655デフォルトの名無しさん
NGNG・項目がすべて0のIDを抽出する。
・ID=001は、項目1が'1'のレコードもあるので抽出しない。
create view 〜 where (item1 = 0) and (item2 = 0) and (item3 = 0) and (NOT ID = '001')
・ID=002は、1レコードだけ(重複せずに)抽出する。
view に対して DISTINCT
0656デフォルトの名無しさん
NGNG0657デフォルトの名無しさん
NGNGWHERE MAX(項目1)=0 AND <中略>
GROUP BY ID
0658デフォルトの名無しさん
NGNGSQLを満足に使いこなせないヴァカどもが傷を舐め合うスレはここですか?
0659デフォルトの名無しさん
NGNGまぁ、全然理解出来なかった君よりは幾分ましだと思うぞ。
0660デフォルトの名無しさん
NGNGウワーン、煽りに煽りで返された (泣)
逆ギレしてもいいでちゅか?
0661デフォルトの名無しさん
NGNGつまり、「DISTINCT 使うのはクソ」ということでよろしいか?
0663デフォルトの名無しさん
NGNG>>657のようにhavingでなくwhere句で書くのは普通のことなんでしょうか?
0664デフォルトの名無しさん
NGNG>642の続きだったから
>643の「エイリアス」を「エイリアン」と
読んでしまった俺を許してくれ。
0665デフォルトの名無しさん
NGNG集計前のデータに対する条件付けはWHERE句
集計後のデータに対する条件付けはHAVING句
だから>657はHAVING句が正解
0667デフォルトの名無しさん
NGNGTABLE<権限>
ユーザーID
機能名
権限レベル
TABLE<ユーザー>
ユーザーID
グループID
TABLE<権限グループ>
グループID
機能名
権限レベル
こういう3つのテーブルがあって、
<権限グループ>が更新されたら、<権限>も更新するというトリガーを作りたいんだが、
おまいら誰か教えてください。削除と挿入はできたんだが...
0668デフォルトの名無しさん
NGNG0669デフォルトの名無しさん
NGNG一番お気楽に使い始めることが出来るのはVBAじゃないかと思う。
0670デフォルトの名無しさん
NGNG0671デフォルトの名無しさん
NGNG作ったSQLを試しに流してみたいときなんかに使いたいのですが・・・。
ちなみにSQL鯖は6.5でつ。(藁
0672デフォルトの名無しさん
NGNGクエリーアナライザ
0673デフォルトの名無しさん
NGNGどうすればいいんだ
使用環境
(PC2台に同じテーブル構成の)MySQLとperl
perlの方は、kore.plです(爆死
0674デフォルトの名無しさん
NGNGそれってSQL鯖のCD-ROMに入っているですよね?
開発環境がWin2000WSなんですが、問題なくインスコできるでしょうか?
0675デフォルトの名無しさん
NGNGクライアントツールって位だから、できまふ。
0676671
NGNGさっき、6.5のCD-ROM取ってきて入れようとしたんですが、Win2KじゃSetup実行できないよ〜んって
言われますた。(ショボーン
6.5の場合、SQLのコンソールはISQL/Wですよね?
しかたないので、VS6DevのCD-ROMを見てるですが、同じようなのは見つけられませんですた。
VS6Dev付属のBackOffice2000のCDもセトウプ起動したらいきなり全部インスコしようとしてくるし・・・。
必要なのはSQLのコンソールとエンタープライズマネージャーぐらいなんだが・・・。
クライアントツールはどこにはいっとんじゃ?
CDがいっぱいありすぎてさっぱり判らんぞ。ゴルァ>MS
0677デフォルトの名無しさん
NGNGDOSから「SQLPLUS SCOTT/TIGER@TNSN @FILE=D:\TEST.SQL」
とやると、コネクトしてファイルからSQLを実行しますが、
「SQLを実行して終了」という起動オプションみたいなものはありますか?
一応、実行されるファイルに「EXIT」コマンドを入れておくと
ファイルを実行後に終了するのですが、
実行したSQLが正常に終わったかどうかが判定できません。
そもそもSQLPLUS.EXE自体の復帰値?は「0」しかないのですかね。
0678デフォルトの名無しさん
NGNG0679デフォルトの名無しさん
NGNGMicrosoft Query は?Office2000が入っていれば入ってると思う。
Office直下の MSQRY32.EXE
win2k+SQLサーバでやったことは無いけど、
win2k+Symfoでも動いたからダイジョブそうな気がする。
ただ、難解なSQLとかはダメだったりした記憶が。
0680デフォルトの名無しさん
NGNGレスありがと。
> Office直下の MSQRY32.EXE
たしかにこれ動くんだけど、これってAccessのコンポーネントで動いてない?
変なクエリウィンドウや接続にDSN聞いてくる辺り、もろそれっぽいんですが・・・。
できればISQLみたいにSQL鯖とネイティブ(と言えばいいのかな?)な接続をする方がいいんですけど。
0681671
NGNGBackOffの2枚目CDにSQL鯖があって、その中のセトウp起動したら見覚えのある
ダイアログが出たYO。
あ〜、コンソールの用意だけで半日潰しちまった。(鬱
0682デフォルトの名無しさん
NGNGosqlとかisqlとかがSQL鯖のフォルダにあるよ
コマンドラインから使う
0683デフォルトの名無しさん
NGNGテーブルA,テーブルBがあり、
BはAのバックアップとして存在します。
AをupdateするたびにBへ同じ内容をinsertしています。
BはAのカラム+insertされた日付もキーに持っています。
BのデータをAに戻すSQLを教えていただけないでしょうか。
一度にではなく、1件指定で戻したいのです。
よろしくお願いします。
0684デフォルトの名無しさん
NGNG0685デフォルトの名無しさん
NGNG0686デフォルトの名無しさん
NGNG結合キーでJOINして
指定したい1件を条件式に入れて
ほか全ての項目をセットすりゃいいだけじゃん!
あと質問するときはデータベースの書けちゅーに
方言があって違うときがあるから
0687デフォルトの名無しさん
NGNGinsert into A select 列名 from b where 入れたい条件
でいいんじゃないの
0688デフォルトの名無しさん
NGNGduplicate records on key error...
0690デフォルトの名無しさん
NGNGI don't know >>683's environmet.
But READ this thoroughly.
>>683 wants rollback by 1 record.
TABLE A is not empty.
I can't understand your saying...
'He shuold escape duplicate error by exist word.'
It's no meant with this way.
As writing >>686
if using MSSQL
upate A
set A.col1 = b.col1,
....
from A,B
where A.KEY=B.KEY AND
B.KEY= 'VALUE' AND
B.UPDATE_DATE = 'YYYY/MM/DD'
If using Oracle,Oracle can't use FROM in UPDATE.
So you only have way of deviding this SQL to
SELECT ... INTO ... FROM B
WHERE B.KEY= 'VALUE' AND
B.UPDATE_DATE = 'YYYY/MM/DD'
and
UPDATE A ... .
...same above WHERE words.
in a program code.
0691デフォルトの名無しさん
NGNGtyu-ka, ro-maji de uteba iinnja?
0692デフォルトの名無しさん
NGNGninnja ha nannninnja?
0693デフォルトの名無しさん
NGNG---------------
A | 30 | mona
A | 40 | sii
B | 50 | giko
B | 30 | dqn
というテーブルがあるとして、
classの中でtestを降順で順位付けして
class | test | rank
-----
A | 30 | 2
A | 40 | 1
B | 50 | 1
B | 30 | 2
みたいな結果を出し、最終的に、classでrankが2の
monaとdqnを取り出したいわけですが、こういうの可能ですか?
ちなみにpostgresでoracleのような分析functionはなしです。
0694デフォルトの名無しさん
NGNGgourp byと、limit 1 offset 1(2番目を取り出す)
を用いてできないかなーと考えているのですが、、、
0695デフォルトの名無しさん
NGNGちなみに同点の場合はどうする?
同順をつけるとかは無理っすよ
あまり深く考えない第一印象では
PG側でループしながらやるかな
0696693
NGNG同点は特別に今回は考えなくてもよい状況なんす。
PG側でループしながらというのは?どういうことですか?
0697693
NGNG0698デフォルトの名無しさん
NGNGSELECT *
FROM ( SELECT B.CLASS, B.NAME, B.TEST
, ( SELECT COUNT(TEST) + 1
FROM テーブル A
WHERE A.TEST > B.TEST
AND A.CLASS = B.CLASS ) AS "LANK"
FROM テーブル B
) RESULT
WHERE RESULT.LANK = 2
ちなみに、oracleだとこんな感じでもできる(もっといい方法があるような気も)
postgresうんぬんはよくわからん。スマソ
ただ、データ多いとかえってこないかも。
0699693
NGNGそんなoracleの分析rank() orverとか使ってるわけでも
ないので、postgresでもできるかも。
これからちょっち実データ作ってトレースしてみます。
0700698
NGNGうっ・・ LANK
0701693
NGNG"class" text,
"test" int4,
"name" text
);
insert into test2 values('A',30,'mona');
insert into test2 values('A',40,'sii');
insert into test2 values('B',50,'giko');
insert into test2 values('B',30,'dqn');
SELECT
*
FROM
(SELECT
B.class,
B.name,
B.test,
(SELECT
COUNT(test) + 1
FROM
test2 A
WHERE
A.test > B.test
AND A.class = B.class
) AS "rank"
FROM
test2 B
) res
WHERE
res.rank = 2
0702693
NGNGsql for smartiesでrankができるってのは見たことあったけど、
rank() orver(partition by A order by A)
相当もできるのかー
ちなみに、
insert into test2 values('A',40,'hiroyuki');
入れても、
SELECT
*
FROM
(SELECT
B.class,
B.name,
B.test,
(SELECT
count(distinct(test)) + 1
FROM
test2 A
WHERE
A.test >= B.test
AND A.class = B.class
) AS "rank"
FROM
test2 B
) res
WHERE
res.rank = 2
こうすればできる〜〜〜ヽ( ・∀・)ノ
0703693
NGNG698さん頭いいっすね。THX!!!
0704693
NGNGSELECT
*
FROM
(SELECT
B.class,
B.name,
B.test,
(SELECT
count(distinct(test)) + 1
FROM
test2 A
WHERE
A.test >= B.test
AND A.class = B.class
) AS "rank"
FROM
test2 B
) res
WHERE
res.rank = 2
0705693
NGNGSELECT
*
FROM
(SELECT
B.class,
B.name,
B.test,
(SELECT
count(distinct(test)) + 1
FROM
test2 A
WHERE
A.test >= B.test
AND A.class = B.class
) AS "rank"
FROM
test2 B
) res
WHERE
res.rank = 2
0706693
NGNG0707693
NGNG今頃、藁田YO!!
ところで、
>795のやつなんすけど、
>693のテーブルがsqlで取り出したリレーションだと
してどうsql書けばよいんでしょうか?
0708693
NGNGSELECT
*
FROM
test2 as Q
WHERE
Q.name in (SELECT
res.name
FROM
(SELECT
B.class,
B.name,
B.test,
(SELECT
count(test) + 1
FROM
test2 A
WHERE
A.name = Q.name AND
A.test > B.test AND
A.class = B.class
) AS "rank"
FROM
test2 B
WHERE
B.name = Q.name
) res
WHERE
res.rank = 2
)
0709693
NGNG>693はテーブルtest2から取り出したリレーションでQとしています。
0710693
NGNG散歩逝ってきます...と思ってちょっと考えたら、導けた。
SELECT
res.id
FROM
(SELECT
_xn.id,
(SELECT
count(__xn.id) + 1
FROM
xml_node __xn,
xml_path __xp
WHERE
__xn.id = __xp.ref_node AND
__xn.id = qqq.id AND
__xn.document = _xn.document AND
_int_to_numstr(_xp.d_order) > _int_to_numstr(__xp.d_order)
) AS "rank"
FROM
xml_node _xn,
xml_path _xp
WHERE
_xn.id = _xp.ref_node AND
_xn.id = qqq.id
) res
WHERE
res.rank = 2
0711693
NGNGSELECT
*
FROM
test2 as Q
WHERE
Q.name in (SELECT
res.name
FROM
(SELECT
B.class,
B.name,
B.test,
(SELECT
count(test) + 1
FROM
test2 A
WHERE
A.test > B.test AND
A.class = B.class
) AS "rank"
FROM
test2 B
) res
WHERE
res.rank = 2 and
res.name = Q.name
)
0712693
NGNGsubqueryではできないか。。。(書きすぎでスマソ
0713デフォルトの名無しさん
NGNGってなんでしょう?
シリアライズするのはなんとなくわかるんですけど
どの時点からシリアライズされるのでしょう?
この文が実行されるとすぐ?
0714デフォルトの名無しさん
NGNG0715デフォルトの名無しさん
NGNG> SET TRANSACTION ISOLATION LEVEL SERIALIZABLE
> ってなんでしょう?
なんでググらんの ?
SET TRANSACTION ISOLATION LEVEL SERIALIZABLE をそのまま「日本語」でググレば...
ttp://www.postgresql.jp/document/pg653doc/j/user/sql-set.htm
とかでてくるぞ。
説明読んでも意味わからんのなら、意味わかるまで使う必要はない。
0716デフォルトの名無しさん
NGNGPL/SQLなのですが、あるテーブルのカーソルを作り、
その結果セットから任意のレコード(「n番目」というような)を
取り出したいのですが、これはループしてFETCHさせる以外に
方法はないでしょうか??
0717デフォルトの名無しさん
NGNGselect 部品番号 from 部品 where 色='赤色'; と
select 部品番号 from 部品 where 重さ=100;
をそれぞれ単独で実行させた場合は両方ともちゃんと検索できるのですが、
A・・・ select 部門番号 from 供給 where 部品番号 = (select 部品番号 from 部品 where 色='赤色');
B・・・ select 部門番号 from 供給 where 部品番号 = (select 部品番号 from 部品 where 重さ=100);
をそれぞれ実行するとAの方だけエラーになってしまうのですがなぜなんでしょう?
だれか教えてください。
0718デフォルトの名無しさん
NGNGselect 部品番号 from 部品 where 色='赤色'
でレコードは返ってくるの?
返ってこなきゃエラーになると思うんだけど。
0719デフォルトの名無しさん
NGNGin
0720717
NGNGの場合レコードは返ってきます。
0721717
NGNG719さんありがとう
0722デフォルトの名無しさん
NGNG誰も、結合については教えてやらんのか...。
0723デフォルトの名無しさん
NGNG0724デフォルトの名無しさん
NGNGいや、単純に吹く問い合わせについての問題ならいいんだが、>>717 がやりたいことに吹く問い合わせが本当に必要なのかとちょっと思ったんでね。
0725デフォルトの名無しさん
NGNG部品(部品番号、色)
供給(部門番号、部品番号、業者番号)
というデータベースがあったとして、
東京の業者から赤色の部品が供給されている部門の番号を求めるという問題
なんですけど、
select 部門番号 from 供給 where 業者番号 in (select 業者番号 from 業者 where 住所='東京' and 業者番号 in (select 業者番号 from 供給 where 部品番号 in (select 部品番号 from 部品 where 色='赤色')));
このSQL文は間違っているんですか?
0726デフォルトの名無しさん
NGNG8i以降ならできるよ。
サブクエリにOrder by使ってRownum擬似列を利用しましょう。
select rownum , サブクエリの選択列
from (select XXX from TTT)
これをさらにサブクエリにして固定項目になったRownumをwhere句で使えばおっけー。
構文はヘルプ見てがんばり。
0727デフォルトの名無しさん
NGNG間違っちゃいないがまんまだな。アクセスが多すぎるぞ。
俺ならこうする。
select 部門番号
from 供給
where 業者番号 in (select 業者.業者番号
from 業者
where 業者.住所 = "東京")
and 部品番号 in (select 部品.部品番号
from 部品
where 部品.色 = "赤色")
0728デフォルトの名無しさん
NGNGAccess2000 に作らせてみた...
SELECT 供給.部門番号
FROM (業者 INNER JOIN 供給 ON 業者.業者番号 = 供給.業者番号) INNER JOIN 部品 ON 供給.部品番号 = 部品.部品番号
WHERE ((([業者]![住所])='東京') AND (([部品]![色])='赤'));
まあ、データベースになれていないと「まず赤色の部品の番号を求めて、その部品番号を供給している業者を求めて...」と考えたくなる気持ちはよくわかる。
でもその場合でも、
select 部門番号 from 供給
where 部品番号 in (select 部品番号 from 部品 where 色 = '赤')
and 業者番号 in (select 業者番号 from 業者 where 住所 = '東京都');
ぐらいにしとけ。(動作未確認)
0729716
NGNG今度8i導入するんですけどまだ今は7です。
8iに移行してからになりますが、やってみます。
ホントにありがとうです。
0730デフォルトの名無しさん
NGNG0731デフォルトの名無しさん
NGNGというデータベースから
どの業者番号からも供給を受けていない部門番号をもとめるにはどうすればいいでしょうか?
0732デフォルトの名無しさん
NGNG0733デフォルトの名無しさん
NGNG出来ないほうがおかしいと思わない?
0734デフォルトの名無しさん
NGNGとあるテーブルが2つありまして、
A、シーケンス番号(SEQ)、登録日(MDATE)
B、シーケンス番号(SEQ)、Aのシーケンス番号(A.SEQ)、登録者(MCD)
といった感じになっております。
Aテーブルの情報の詳細をBに置いておくといった感じです。
Aテーブルのレコードと、AがBに参照されている件数をcountでとっていたのですが、
Bテーブルに重複されて入っているデーターも数えてしまって困っています。
重複データーを1件とし、countするにはどうすればいいでしょうか。
select distinct count(mcd) ではだめでした。
0735デフォルトの名無しさん
NGNGだから、どうしてそういうものの聞き方をする?
やってみたのか?
そんな質問に答えてもらったところで、次は「どうやるの?」って聞くのか?
まず自分でいろいろ検証してみて、それでだめなら具体的に聞け。
0736デフォルトの名無しさん
NGNG0737デフォルトの名無しさん
NGNGネタに反応するなよ・・・。
0738デフォルトの名無しさん
NGNGdistinctした物をcountすれば良し
0739デフォルトの名無しさん
NGNGまとめ:
Oracle以外データベース製品はたくさんあります。
にもかかわらずなぜみんなOracleなのか?
Informix、DB2などなど。あ、SQL Serverは論外ですよ。(笑)
なぜこれらの製品はそんなにシェアがないのか?
最近思うのは、もしかしたらこれらの製品はOracleよりももっとひどいのかも
しれないと。。。(涙)
データベース業界ではOracleが一番使いやすく性能も出る製品なのだと思い
ます。
データベース業界はまだまだ未成熟な業界だと思います。
これを読んで、「そんなことないよ。Oracleっていいデータベースだよ」と思った
あなたは、Oracleに洗脳されているだけではないでしょうか。
0740デフォルトの名無しさん
NGNGそれもう飽きた
0741デフォルトの名無しさん
NGNGテーブルA
ID1 数値・Null不可
ID2 数値・Null不可
FLG 数値・Null可
※ID1、ID2、FLGで一意です。
ここで、FLGがNullのデータが存在しないID1、ID2 のレコードを取得したいのですが
どう書けばいいのでしょうか。
select a.* from a,
(select id1,id2 from a where flg is null)b
where a.id1=b.id1 and a.id2=b.id2
で取得できるレコード以外のレコード、て感じです。
よろしくお願いします。
0742デフォルトの名無しさん
NGNGよくわかんないけど、
SELECT * FROM A WHERE FLG IS NULL
じゃなくて?
0743デフォルトの名無しさん
NGNGwhere FLG is not null;
じゃだめなのか?
>FLGがNullのデータが存在しないID1、ID2
FLGがnullでないレコードだよね。
もっと深い意味かな?
0744743
NGNG0745742
NGNGFLGがNULLのレコードじゃなくて?
>FLGがNullのデータが存在しないID1、ID2 のレコード
↓
FLGがNullの(すなわちFLG)データが存在しない(けど)ID1(と)、ID2(は存在している)レコード
と俺は解釈したが真相はいかに?
って
>>741の「で取得できるレコード以外のレコード、て感じです。」を詠む限りNOT NULLっぽい。
0746デフォルトの名無しさん
NGNG> ここで、FLGがNullのデータが存在しないID1、ID2 のレコードを取得したいのですが
^
構文エラーです。
0747743
NGNGID1 数値・Null不可
ID2 数値・Null不可
FLG 数値・Null可
※ID1、ID2、FLGで一意です。
nullも一つのデータとしてのunique index(AK)で
プライマリキーとして(外部制約の親テーブルとして)
できてしまうから
すごいというか、なんでもありというか...
0748741です
NGNGわかりにくくてすみません。
ID1 ID2 FLG
1 1 Null
1 1 1
1 1 2
1 2 1 ※
1 2 2 ※
1 3 Null
1 3 1
の場合に※のレコードを取得したいのです。
0749デフォルトの名無しさん
NGNG0750741です
NGNGID1=1、ID2=1 及び ID1=1、ID2=3 には FLGがNullのデータがありますが
ID1=1、ID2=2 にはFLGがNullのデータがありません。それを取得したいのです。
0751ねこま
NGNG違うかな?
0752751
NGNG0753743=749
NGNGFROM A AS t1
WHERE not exists (
select * from A where FLG is null
and ID1 = t1.ID1 and ID2 = t1.ID2
);
0754741です
NGNG他の方もありがとうございました!
このスレ「困った時に頼りになるスレ」No1です。私的に。
前スレで次スレ立ててと騒いでたのは私です。てなわけでぜひパート3も!
0755デフォルトの名無しさん
NGNGすげー、きれいだ。感動した。
漏れもそうだけど、
インラインビューをやたら使う
Ora厨は参考にするといいかも。
0756デフォルトの名無しさん
NGNG商品データで、商品ごとにサイズや色のバリエーションがあるような場合、
どういうテープルを設計するんでしょうか?
現在は、商品.色 に Red,Blue などとして、プログラム側で分解処理して
いるのですが、激しく間違っているような気がしてます。かといって、
テーブル商品色
商品ID | 色
2009 | Red
2009 | Blue
0323 | White
みたいなテーブルを作るのも効率悪そうです。
とりあえずサイズや色によって、価格など他の要素は変化しないのですが、
どういうテーブルが最適なのでしょうか?
0757デフォルトの名無しさん
NGNG0758デフォルトの名無しさん
NGNG何をしたいかによるよ。
色に関した処理をあまりしないなら、プログラム側でやってもいいと思う。
色についていろいろ処理する必要がある (何色が売れてるとか知りたいとかね) なら、色テーブルを持つのがいいんじゃないの ?
0759デフォルトの名無しさん
NGNGありがとうございます。
とりあえず今回は現状のままでやってみることにします。
0760デフォルトの名無しさん
NGNGTBL_A.日付には、VARCHAR2で'19950101'と入っています。('YYYYMMDD')
TBL_B.日付には、VARCHAR2で'021215'と入っています。('YYMMDD')
TBL_A.日付以降の行をTBL_Bから抽出したいのですが、馬鹿な私は。。。
SUBSTR(TBL_A.日付, 3, 6) <= TBL_B.日付 とやってしまいました。
という訳で、どなたかまっとうなコーディング方法を教えてください。
ちなみに10月から、いきなりシステム部門に転属させられた文学部卒です(藁&泣)
0761デフォルトの名無しさん
NGNG0762デフォルトの名無しさん
NGNGTO_DATE(TBL_A.日付) <= TO_DATE(TBL_B.日付) で良いのでしょうか?
この場合、95-01-01 <= 02-12-15 となると思うのですが、
大小関係は正しく判断されるのでしょうか?
0763デフォルトの名無しさん
NGNG0764デフォルトの名無しさん
NGNG今日中に解決しないといけないのです。試す環境が自宅にあればいいのですが。。。
0765デフォルトの名無しさん
NGNG0766デフォルトの名無しさん
NGNG0767デフォルトの名無しさん
NGNG明日、リリースなのにこんなこと
しとるのか?
ネタ+女だろ。
0768デフォルトの名無しさん
NGNGワロタ
0769デフォルトの名無しさん
NGNGどなたかマジレスお願いします。m(__)m
初心者にとっては本当に真面目な疑問なのです。日程も本当です。
朝速攻で対処しないといけないのです。
0770デフォルトの名無しさん
NGNGだったらすぐ会社 or 現地に行って試せよ、ヴォケ。
0771デフォルトの名無しさん
NGNGそんなにカッカするなよ、便秘か?
女の子だし、簡単だから
もっと遊びたいのだが。
0772デフォルトの名無しさん
NGNGこっちは遊びじゃないんです。
教えて下さい!
0773デフォルトの名無しさん
NGNG上司の携帯に電話して、鍵あけてもらえ。
0774デフォルトの名無しさん
NGNG0775デフォルトの名無しさん
NGNG本屋にでも行った方が早いよ。まさか寒いから嫌とか言わんだろうが。
0776デフォルトの名無しさん
NGNG0777デフォルトの名無しさん
NGNGおまえ、769だろ。
to_dateくらい誰でも知っとるわ。
煽っても無駄だ。
0778デフォルトの名無しさん
NGNG最後は教えてやるから、
のってきてちょうだい。
0779デフォルトの名無しさん
NGNGちなみに772は質問者とは別人だね。何故かsageになってるもんな。
でもって、漏れはORACLEよくわからんから答えられんw
>>776
999が答えてやれww
0780デフォルトの名無しさん
NGNGもう、こないのか769。
返事したら教えてやるぞ。
もう分かっちゃったのか?
0781デフォルトの名無しさん
NGNG25才です。本当に教えて下さい。お願いします。m(__)m
0782デフォルトの名無しさん
NGNG入っちゃったの?
0783デフォルトの名無しさん
NGNG0784デフォルトの名無しさん
NGNG人事はPCが使える→じゃあシステム課へ といった感覚なのでしょう。。。
ホントに寝ててもプログラムが気になります。初心者なので何でもないような事でも
次々と疑問に思い始めると、キリがないのです。ホントに泣いてます。
0785デフォルトの名無しさん
NGNGTO_DATE(TBL_A.日付,"YYYYMMDD") <= TO_DATE(TBL_B.日付,"YYMMDD")
だよ。
他にも女の子いるの?合コンしよ。
0786オラクルマスター
NGNGTO_DATE(TBL_A.日付, 'YYYYMMDD') <= TO_DATE(TBL_B.日付, 'YYMMDD')
だろが!
0787デフォルトの名無しさん
NGNG0788デフォルトの名無しさん
NGNG0789デフォルトの名無しさん
NGNG最後の疑問ですが、19950101 <= 021215 だと大小関係が逆にはならないのですか?
0790デフォルトの名無しさん
NGNG0791デフォルトの名無しさん
NGNG0792オラクルマスター
NGNG日付型は文字型とは違うので比較の書式などありません。
すべて内部的な書式に従います。
0793デフォルトの名無しさん
NGNG大丈夫だよ、その為に日付変換してるんだろ。
それより、早くどこ勤務してるの?
都内なんだ。それなら、合コンしよ。
漏れら、別にオタクじゃないよ。
0794デフォルトの名無しさん
NGNGは抜いてくれ。消し忘れた。
0795デフォルトの名無しさん
NGNGつまり、桁数(特に年)が異なる場合でもTO_DATE関数使用後に比較すればよろしいのですね。
勉強になりました。ということは、791さんは誤りということですよね。
0796デフォルトの名無しさん
NGNG0797デフォルトの名無しさん
NGNGクリスマス近いからあせっていますね(w
0798793
NGNGのことを言っているようだが、
そんなデータがあるなら
テーブル設計をYYYYMMDDにしない
方がおかしい。
0799オラクルマスター
NGNG比較が成功すれば、日付型という一定の形(固定長7バイト)になりますから
そのまま比較できます。
要はどのように変換するかが重要なのです。
'021215'の場合、2002/12/15と1902/12/15のどちらに変換するか間違えなければ
問題ありません。
0800オラクルマスター
NGNG「変換が成功すれば」だった・・・
0802デフォルトの名無しさん
NGNG0803793
NGNG0805デフォルトの名無しさん
NGNG名前を間違えただけか?
合コンしたら教えてやる
にしとけばヨカータ...
しかし、女と分かると速攻で
スレが伸びるな。
0806806
NGNGname CHAR(10) NOT NULL,
tot_sales DECIMAL(8,2) NOT NULL,
region INTEGER NOT NULL
);
INSERT INTO SalesRegions VALUES('Able', 100.000, 1);
INSERT INTO SalesRegions VALUES('Baker', 900.00, 1);
INSERT INTO SalesRegions VALUES('Brown', 900.00, 1);
INSERT INTO SalesRegions VALUES('Carey', 700.00, 2);
INSERT INTO SalesRegions VALUES('Delta', 600.00, 2);
INSERT INTO SalesRegions VALUES('Eddy', 500.00, 2);
INSERT INTO SalesRegions VALUES('Fred',900.00, 3);
INSERT INTO SalesRegions VALUES('George', 700.00, 3);
INSERT INTO SalesRegions VALUES('Herman', 600.00, 3);
select * from salesregions;
nametot_salesregion
Able 100.001
Baker 900.001
Brown 900.001
Carey 700.002
Delta 600.002
Eddy 500.002
Fred 900.003
George 700.003
Herman 600.003
0807806
NGNGR1.name,
R1.region,
R1.tot_sales,
count(*)
FROM
SalesRegions AS R1,
SalesRegions AS R2
WHERE
R2.tot_sales >= R1.tot_sales AND
R1.region = R2.region
GROUP BY
R1.name,
R1.region,
R1.tot_sales
-- HAVING COUNT(*) = 2
でランキングは出せますが、
From句が結構な処理のSubQueryな場合ってどのようにしたらよいのでしょう?
0808806
NGNGSELECT
R1.name,
R1.region,
R1.tot_sales,
count(*)
FROM
(select * from SalesRegions where region in (1,2)) AS R1,
(select * from SalesRegions where region in (1,2)) AS R2
WHERE
R2.tot_sales >= R1.tot_sales AND
R1.region = R2.region
GROUP BY
R1.name,
R1.region,
R1.tot_sales
こう同じsubquery二回発行するってのもアレですよね?
optimizerに吸収されるのかもしれませんが。
何か上手くやれないもんでしょうか?
where句は集約の条件部で変えられないですよねー
0809806
NGNG0810デフォルトの名無しさん
NGNGが引っかかるが、
FROM句を
SalesRegions AS R1,
SalesRegions AS R2
に戻して、
WEHRE句に
and R1.region in (1,2)
を追加じゃだめなのか?
ランキングとは
tot_salesのランキングでいいのか?
ちょっと、ランキングの条件が見えん。
あと、このテーブルはnameでユニークなのか?
from句内のクエリはサブクエリとは
言わず、インラインビューというはず。
0811806
NGNGなるへそーインラインビューね。覚えますた。
実際はその、インラインビューがもっと複雑で、
where句に書くわけにもいかんのです。>808はイメージで。
nameはprimary keyと考えてよかとです。
条件はrigeonごとのtot_salesのランキングをしたいということです。
Oracleとかだと、こんな感じでしょうか?
select ... rank() over (partision by rigeon order by tot_sales)
0812デフォルトの名無しさん
NGNGどう書けばよいのでしょうか。おねがいします。
Accessです。
0813デフォルトの名無しさん
NGNG年/月だけの項目でグループ化する
Format([テーブル1]![フィールド1],"yyyy/mm")みたいの。
DateSerialで1日の日付を作っても可
0814デフォルトの名無しさん
NGNGselect format(日付カラム,"yyyy/mm"),sum(数値カラム)
from table
group by format(日付カラム,"yyyy/mm")
0816デフォルトの名無しさん
NGNG結果セットを取得してJavaサーブレットに返す場合
普通はどうやってますか?
OUTパラメータにカーソル変数を指定したりできませんよね・・・
うーん、わからない・・・(;´д`)
0817デフォルトの名無しさん
NGNG日ごとのアクセスカウンターを作っています。
よろしくお願いします。
日付時刻型のフィールドを年月日ごとにカウントするのは
SELECT FORMAT(日付型のフィールド名,'YYYY/MM/DD'),COUNT(*)
FROM テーブル名
GROUP BY FORMAT(日付型のフィールド名,'YYYY/MM/DD')
で、できたのですが。
これではデータが入ってる日付以外はカウントすることができません。
データが入ってない日付の場合に
0という結果を返すSQL文を書くことができるのでしょうか?
テーブルのデータ名
- 日付時刻型 -
2002/12/01
2002/12/01
2002/12/03
希望する結果
2002/12/01 2
2002/12/02 0
2002/12/03 1
0818817
NGNG書き間違いです。失礼しました。
テーブルのデータ名→テーブルのデータ
0819デフォルトの名無しさん
NGNGSQLの世界において、 存在しないデータからデータを
作ることは神でないと無理だ。
もう一つ、日付データのテーブルを作って
m1
a 日付型
a
2002/12/01
2002/12/02
2002/12/03
t1
a 日付
a
2002/12/01
2002/12/01
2002/12/03
2002/12/03
SELECT a,Count(*) AS cnt
FROM t1
GROUP BY a
ORDER BY a
UNION
SELECT a,0 as cnt
FROM m1
WHERE
NOT EXISTS
(SELECT * FROM t1 WHERE a = m1.a) ;
これが嫌なら、VBAでdateaddで1日ずつ
足して、それについてカウントしてくかだな。
0820デフォルトの名無しさん
NGNG言った方がいいかな、まぁ、どっちでもいいけど
0821817
NGNGありがとうございます。
やはり無理ですか。やっとすっきりしました。
日付用のテーブルを作るやり方は思いつきませんでした、このやり方はいいですね、
しかしASP側からSQLを実行するカウンターなので今回はASP側でdateaddして処理しようと思います。
では、また何かありましたらよろしくお願いします。
0822デフォルトの名無しさん
NGNGすげー、これも感動した。
もしかして>>753と同一人物?
このスレマターリしてるし、ホント役に立つ。
データベーススレとは大違いだ。
0823デフォルトの名無しさん
NGNG0824デフォルトの名無しさん
NGNG>>822は
データベーススレ
http://pc3.2ch.net/test/read.cgi/tech/1020158297/l50
を言っている。
0825デフォルトの名無しさん
NGNGA B C D
101 10 01 00
102 10 01 00
102 10 02 01
102 20 01 00
103 10 01 00
A 伝票番号
B 明細番号
C ID
D 削除ID
<出力結果>
101 10 01 00
102 20 01 00
103 10 01 00
ABが同一でDに対応したCのレコードをペア取り除いた結果を表示するSQL文を誰か
教えてください。おながいすます。非常に困ってます。
0826デフォルトの名無しさん
NGNGnot exists文の回答レスが続くな。
>>822
そうだよ、同一人物、漏れだよ。
ちなみに合コン誘ったのに逃げられたのも漏れ。
>>802 まだ受け付けてるよ、
もし見ているのならレスしてくれよ。
ホントコピペにでてくるような
PCオタクじゃないからさ。
このスレみてる女の子、合コンしようぜ。
おながいすます。非常に困ってます(ワラ
っでSQLはこれ。
SELECT *
FROM AA AS t1
WHERE
not exists
(select * from AA
where A= t1.A and B = t1.B and C = t1.D )
and
not exists
(select * from AA
where A = t1.A and B = t1.B and D = t1.C)
0827825
NGNGうまくいきました。
これで帰れます。昼過ぎから悩んで業務終了後本屋でSQLの本買ってきたのですが
よくわかりませんでした。SQL文を見て、リファレンスと見比べて、ああこういうことだったのか
と今ちょっとわかったような気がします。とてもありがとうございますた。
0828デフォルトの名無しさん
NGNGオラクルは結果セットを戻り値として返せないから
検索系のSPは使えない。
0829デフォルトの名無しさん
NGNGあります。ユーザーで名寄せして、そのユーザーに
対応する最も大きい金額をだけ抽出したいのです。
お助けください。DBは PostgreSQL 7.2 です。
user_id price
1001 20000
1002 21000
1003 20000
1001 25000
1002 19000
求めたい結果
1001 25000
1002 21000
1003 20000
0830デフォルトの名無しさん
NGNGSELECT user_id,MAX(price) FROM hogehoge GROUP BY user_id
0831デフォルトの名無しさん
NGNGAND検索の対象となるフィールドが「ID」「NAME」「CAR」の場合
IDを指定して検索したい時、NAMEやCARはWHEREに組み込まれないように
したいのです。もちろん複数のフィールドを指定して検索する場合もあります。
MS-ACCESSであれば、簡単に出来るのですが、SQLだと?
0832デフォルトの名無しさん
NGNG> IDを指定して検索したい時、NAMEやCARはWHEREに組み込まれないように
> したいのです。
指定しなけりゃいいと思うけど ?
SELECT * FROM TableName WHERE ID = xxxx; じゃまずいのか ?
> MS-ACCESSであれば、簡単に出来るのですが、SQLだと?
Access に SQL ビューと言うものがあるのは知ってるか ?
0833デフォルトの名無しさん
NGNGただし、NAMEやCARという項目でも検索したいのです。
指定しない場合は IFなどで条件分岐しなければいけませんよね。
例えばNAMEを空欄にした時は、、、
IF NAME Is Null
SELECT * FROM TableName WHERE ID = xxx And CAR = ****
でもこれをやっていったら、条件分岐だらけになってしまって。
AccessではWHERE内にLikeを使ってます。
例)WHERE TableName Like "*" & [検索文字] & "*"
これだと[検索文字]に何もいれなくても、Nullになりません。
SQLではどのようにするのでしょうか?
0834デフォルトの名無しさん
NGNG0835デフォルトの名無しさん
NGNGその SQL を呼び出す言語がわからんけど...
> IF NAME Is Null
と書いてるから、VB 系だろうと想定すると...
Private Sub AddCondition(ByRef Condition As String, NewCondition As String)
If Condition <> "" Then
Condition = Condition & " AND"
End If
Condition = Condition & NewCondition
End Sub
Dim Condition As String
Condition = ""
If Not ID Is Null Then AddCondition Condition, "ID = '" & ID & "'"
If Not NAME Is Null Then AddCondition Condition, "NAME = '" & NAME & "'"
If Not CAR Is Null Then AddCondition Condition, "CAR = '" & CAR & "'"
として、"SELECT * FROM TableName WHERE " & Condition & ";" を実行すればいいと思う。
> 例)WHERE TableName Like "*" & [検索文字] & "*"
SQL も、Like 演算子持ってる奴が普通だから、これでいいなら同じようにすればいい。
(ただし、ワイルドカードが '*' とは限らないから、使う DBMS のマニュアルなどで確認すること。)
> これだと[検索文字]に何もいれなくても、Nullになりません。
でも、余分なものも拾うわけだが、それはいいんだよね。
0836デフォルトの名無しさん
NGNGストアドプロシージャ上で記述しようとしたら、ダメでした。
'nz'は関数名として認識されません。 というエラーが出ました。
0837デフォルトの名無しさん
NGNGストアドで呼び出しています。実際の[検索文字]の部分は @パラメーター名 です。
Access mdb でやると、いとも簡単に出来る今回のケースが
SQL-adp でやると、全然上手くいかない。SQL文をもっと勉強しとけばよかった。
0838デフォルトの名無しさん
NGNGexecで動的sqlを使え。
0839デフォルトの名無しさん
NGNGSQL-Server は使ったことないからわからん。
MS に聞くのが吉。
本当にストアドにする必要があるのか疑問に感じるけど。
0840デフォルトの名無しさん
NGNG0841デフォルトの名無しさん
NGNG君はこのスレ見なくていいよ。
0842デフォルトの名無しさん
NGNGよいのだが。
だれか助けてください!
0843デフォルトの名無しさん
NGNG調べたのか?
exec('SQL文')
で動的SQLがストアドで使用できる。
0844デフォルトの名無しさん
NGNGいろいろ調べましたが、難しい言い回しの記述ばかりで、全然理解できてません。
未だに調査中です。
0845デフォルトの名無しさん
NGNGちなみにAccessプロジェクト上で作成可能なのでしょうか?
SQLサーバーは参照だけで、触ることが出来ないのですが。
0846デフォルトの名無しさん
NGNG↓↓↓
>SQLサーバーは参照だけで、触ることが出来ないのですが。
言っとること矛盾してないか?
0847デフォルトの名無しさん
NGNGいえ、Acceessプロジェクト上のストアドプロシージャを編集してるんです。
あくまでもクライアントサイドです。
0848829
NGNGありがとうございます。
実は前述のテーブルには、ユニークなIDと日付の情報
(型はTimesamp)も入っていて、本当はそれも抜き出したい
のです。(先に言え、って感じですよね)
つまり、ユーザーで名寄せして、そのユーザーに対応する
最も大きい金額と、その金額の行のIDと日付を抽出したい。
どうかお知恵を。
id user_id price date
1 1001 20000 19:10:00.496575+09
2 1002 21000 19:20:00.496575+09
3 1003 20000 19:30:00.496575+09
4 1001 25000 19:40:00.496575+09
5 1002 19000 19:50:00.496575+09
求めたい結果
4 1001 25000 19:40:00.496575+09
2 1002 21000 19:20:00.496575+09
3 1003 20000 19:30:00.496575+09
(DBはPostgreSQL 7.2)
0849デフォルトの名無しさん
NGNGhttp://www.users.gr.jp/ml/archive/sql/4318.asp
ただこのメーリングリスト。辿っていっても答えが無いのが惜しい。
0850デフォルトの名無しさん
NGNGストアドはSQL鯖上に組み込むから
サーバ上の話になるんだよ。
CREATE PROCEDURE @id,@car,@name
as
declare @sqlstr varchar(1000)
declare @sql_select varchar(500)
declare @sql_where varchar(500)
set str_select = "select * from table1 "
set @sql_where = ""
if @id is not null
begin
set @id = replace(@id,"'","''")
set @sql_where="where id = '" + @id + "'"
end
if @car is not null
begin
set @car = replace(@car,"'","''")
if @sql_where = ''
begin
@sql_where="where car = '" + @car + "'"
end
else
begin
@sql_where= @sql_where + " and car = '" + @car + "'"
end
end
・・・
set @sqlstr = @sql_select + @sql_where
exec(@sqlstr)
0851デフォルトの名無しさん
NGNG可変条件の検索プログラムで SQL文を組み立てるときに
最初の条件は where それ以降は and とか if文でひたすら
分岐させてるのって面倒じゃない?
もれは、こうやってベースとなる文に必ず真となる条件を
はじめから付けてしまっている。あとは全部 and でつなぐだけだね。
query = "Select * From table Where (1=1) ";
if(condition1 != null) SQL += " condition1 = " + condition1;
if(condition2 != null) SQL += " condition2 = " + condition2;
if(condition3 != null) SQL += " condition3 = " + condition3;
0852851
NGNGquery = "Select * From table Where (1=1) ";
if(condition1 != null) SQL += " and condition1 = " + condition1;
if(condition2 != null) SQL += " and condition2 = " + condition2;
if(condition3 != null) SQL += " and condition3 = " + condition3;
0853デフォルトの名無しさん
NGNGサンクスコ。
0855デフォルトの名無しさん
NGNGここでいう condition1 や condition2 とは何を意味するのでしょうか?
フィールド名?パラメータ名?
0856850
NGNGこれ以上は自分でがんがりなさい。
ついでに
>>848
SELECT user_id,price,date
FROM table1 t1
where price = (select max(price) from table1 where user_id = t1.user_id)
order by user_id;
0857デフォルトの名無しさん
NGNGPostgre なら...
select distinct on (user_id) user_id, price, date from table_name order by price;
でいけるかと。
0858848
NGNGありがとうございます。ちょっと感動しました。
こういうのは本だけ読んでても、やっぱ頭がよくないと
できないですね。
>>848
残念ながら以下のようなエラーが表示されました。
SELECT DISTINCT ON expressions must match initial ORDER BY expressions
0859デフォルトの名無しさん
NGNG多分、distinct on 使用は
エラーメッセージのように行を
特定させないといけないみたいだ。
order by user id, price desk
じゃないかな。
頭は関係ないよ。経験だよ
(知ってるか、知らないかだけ)。
0860デフォルトの名無しさん
NGNGWHEREのLike条件の時って
SELECT * FROM TABLE FieldName Like @パラメータ
って出来ますか?
なんかワイルドカードで囲えないんですけど。
0861デフォルトの名無しさん
NGNG> 残念ながら以下のようなエラーが表示されました。
> SELECT DISTINCT ON expressions must match initial ORDER BY expressions
すまん、今手元に動作環境がないのでマニュアル頼りで書いてた。
DBMS の気持ちになってみれば、(ある種) 集約するんだからソートは必要なんだろうね。
(どうせ、distinct on で一行になるんだから、自動でやってくれてもいいと思うけど...。
あと、一言マニュアルにも書いて欲しいぞ。)
select distinct on (user_id) user_id, price, date from table_name order by user_id, price;
で、試してみて。
0862858
NGNG>>861
ありがとうございます。
select distinct on (user_id) user_id, price, date from table_name order by user_id, price;
これでOKでした。
どんどん経験を積んでいけるように努めます。
0863858
NGNG>>848
で書いた最初の問いかけに抜けていたのですが、
結果は価格の高い順にソートさせたいのです。
>>859 >>861
で挙げられていた「order by user_id, price desc」だと
user_idでソートされてしまい、「order by price desc, user_id」だと
「SELECT DISTINCT ON expressions must match initial ORDER BY expressions」
とエラーが出て、DISTINCTで指定したカラムがORDER BYの最初に来ないと
ダメだぞ、と怒られてしまいます。
この場合は >>856 のようなやり方しかないのでしょうかね。
0864デフォルトの名無しさん
NGNGSELECT * FROM TABLE FieldName Like '%' + @パラメータ + '%'
0865デフォルトの名無しさん
NGNGよく考えてみると、distinct on
の仕組みから無理だな。
priceのソート順を優先させると
意味の無いものになってしまう。
>>856がいいよ。サブクエリ使える
DBMSで全て使用可能な構文だし。
0866デフォルトの名無しさん
NGNG0867デフォルトの名無しさん
NGNG「SQL逆引き大全」、内容がひど過ぎ。
ざっと読んだだけで、
・誤植(単純ミス、誤字、脱字等)が4箇所
・明らかな誤り(著者の知識不足、確認漏れが原因)が10箇所以上
・誤りではないが、SQLが最適でないものが、10箇所以上
・誤りとまでは言えないが、解説の不備(Oracle9iでJoinがサポート
されている点に言及されていない、等)が複数箇所
この分野の類書は数多いが、今まで見た中で一番ひどい内容。
内容をよく確かめずに購入してしまった俺も悪いが、ちょっと腹が立った
ので、晒しage。
0868デフォルトの名無しさん
NGNGで、どうしろと?
(気持ちはわからないでもないが、ここで怒りをぶちまけられても・・・)
0869デフォルトの名無しさん
NGNG0870デフォルトの名無しさん
NGNGあまり無闇にageない方がいいかも。
0871デフォルトの名無しさん
NGNG吉牛のコピペで書いた方がおもしろかったのに。(w
0872デフォルトの名無しさん
NGNG> desc test
ID1 ID2 VALUE
---------- ---------- ------------------
1 1 3
2 2 4
3 2 6
というテーブルがあり、このVALUEをnとすると、
”2^n”
という計算を施し、この値をVALUEに入れたい(updateさせたい)のですが、ORACLE8.1.7でどのようにやればいいのでしょうか?つまり、
ID1 ID2 VALUE
---------- ---------- ------------------
1 1 8
2 2 16
3 2 64
というようにしたいのですが。。。
0873デフォルトの名無しさん
NGNGUPDATE TABLE1
SET VALUE = POWER(2,VALUE)
当方SQLServer
http://www5c.biglobe.ne.jp/~slaper/private/Oracle.htm
を見るとおらくるでもいけるかもね。
0874IGURO
NGNGTAB_A TAB_B
X Y L M
--- ---
1 9 1 3
2 9
<やりたいこと>
'TAB_A.X'と'TAB_.L'を結合し'TAB_A.Y'列を'TAB_B.M'列の値で更新
'TAB_A.X'に結合する'TAB_.L'の値が存在しないときは'0'を設定
((*) 'TAB_A.X','TAB_.L'列はプライマリー制約)
�@ UPDATE TABLE TAB_A TA
SET TA.Y = ( SELECT NVL(TB.M,0)
FROM TAB_B TB
WHERE TA.X = TB.L(+));
�A UPDATE TABLE TAB_A TA
SET TA.X = ( SELECT TB.M
FROM TAB_B TB
WHERE TA.X = TB.L)
WHERE TA.X IN (SELECT TB.L
FROM TAB_B TB
WHERE TA.X = TB.L);
�@のようなSQLを作成したのですが、'TAB_A.Y'のNOT NULL制約に
引っかかってしまいます。
�AのSQLで結合可能な列は更新できたので
どうやら外部結合ができていないようです。
どうすれば�@のようなUPDATEが可能か教えてください。
0875IGURO
NGNGX Y
---
1 9
2 9
<TAB_B>
L M
---
1 3
すみませんTBL例が見づらかったので
再度書き込みさしてもらいました。
よろしくお願いします。
0876デフォルトの名無しさん
NGNGTAB_Bにあるときとない時の2回に分けて更新したら?
0877デフォルトの名無しさん
NGNGありがとうございます。
ばっちりできました!
0878デフォルトの名無しさん
NGNGSQLServerでは
UPDATE TAB_A
SET Y =
(SELECT ISNULL(TB.M, 0)
FROM TAB_A TA2
LEFT OUTER JOIN TAB_B TB ON TA2.X = TB.L
WHERE TAB_A.X = TA2.X)
でうまくいった。
Olacleでは
UPDATE TABLE TAB_A TA
SET TA.Y = ( SELECT NVL(TB.M,0)
FROM TAB_B TB,TAB_A TA2
WHERE TA2.X = TB.L(+)
AND TA.X = TA2.X);
になるかどうかは知らん。
0879デフォルトの名無しさん
NGNGその本買ってしまった・・・
どこがどうおかしいのか教えていただけませんか。
スレ違いか・・・
0880デフォルトの名無しさん
NGNG> その本買ってしまった・・・
> どこがどうおかしいのか教えていただけませんか。
【優先度が高い?箇所のみ抜粋】
■ 012 2つのテーブルを関連付けて表示する (P29)
[Oracle]
SELECT P.PREFNAME, C.CITYNAME
FROM PREF P, CITY C
WHERE P.PREFID = C.PREFID
となっていますが、Oracle 9i では Join がサポートされていますので、SQL Server / Jet と
おなじ構文で問題ないはずです。
(前提条件として、バージョンが明記されていないのが問題だと思います)
019(3つのテーブルを関連付けて表示する)、020(2つのテーブルを関連付けたときに、片方の
テーブルに一致する値がなくても表示する)、021(2つのテーブルを関連付けたときに、最初に
記述したテーブルに一致する値がなくても表示する)も同様です。
■ 054 文字列の右側を特定の文字で埋めて表示する (P72)
[Jet]
「関数RPADもしくは、それにかわる構文は用意されていない」
となっていますが、文字列連結演算子 & 、Left$関数を使用すれば同等の処理が可能です。
055 (文字列の左側を特定の文字で埋めて表示する)についてもほぼ同様です。
(>>881 に続く)
0881デフォルトの名無しさん
NGNG■ 056 数値を四捨五入して表示する (P74)
[Jet]
「関数ROUNDもしくはそれにかわる構文は用意されていない」となっていますが、下記のように、Fix関数を使用して元の値に0.5を加えた値を切り捨てれば、
同等の処理が実現できます。
SELECT Fix(567.89 + 0.5) FROM dual
057についてもほぼ同様です。
■ 058 数値を切り捨てして表示する (P76)
[SQL Server]
「関数TRUNCもしくはそれにかわる構文は用意されていない」となっていますが、下記のように、FLOOR関数を使用すれば同等の処理が可能です。
SELECT FLOOR(567.89) FROM dual
(旧バージョンは確認していませんが、少なくともSQL Server 2000 ではFLOOR関数が
使用可能です)
[Jet]
「関数TRUNCもしくはそれにかわる構文は用意されていない」となっていますが、下記のように、Fix関数を使用すれば同等の処理が可能です。
SELECT Fix(567.89) FROM dual
059についてもほぼ同様です。
(>>882 へ続く)
0882デフォルトの名無しさん
NGNG■ 082 日付の曜日を表示する (P100)
[SQL Server]
「該当関数はサポートされていない」
となっていますが、下記のように、DATENAME関数を使用すれば同等の処理が可能です。
SELECT DATENAME(weekday, UPDATETIME) FROM CUSTOMER
(旧バージョンは確認していませんが、少なくともSQL Server 2000 ではDATENAME関数が
使用可能です)
■ 105 パターンマッチングにおいて条件に一致するレコードを表示する (P127)
「Jetでは記号「%」ではなく、「*」を使っていることに注意してください」
とあり、SQL記述例も「*」となっていますが、ミドルウェアにADOを使用する場合は、「%」を使用
します(ただし、CurrentDb().OpenRecordset メソッド、DoCmd.OpenQuery / RunSQL メソッドの
実行時は、常にDAOの構文解釈で実行されます)ので、解説が不足しています。
163(パターンマッチングにおいて条件に一致するデータのみに更新する)、
178(パターンマッチングにおいて条件に一致するデータを別の表に追加する)、
179(パターンマッチングにおいて条件に一致するデータで新しい表を作成する)についても、
ほぼ同様です。(163 の「データのみに更新」は「データのみを更新」の誤りでは?)
(>>883 へ続く)
0883デフォルトの名無しさん
NGNG■ 164 重複レコードを削除して重複をなくす (P192〜193)
[Jet] ワクの囲い方が不適切。(明らかに誤り)
■ 187 複数テーブルからあるテーブルにすべてを追加する (P218〜219)
「Jetの場合、INSERT INTO〜SELECT文とUNION集合演算子の組み合わせはサポートされていないため、
分けて実行する以外にできません」とありますが、これは誤りで、下記の構文を使用すれば、クエリA
を作成することなく、単独のSQL文で処理可能です。(Jet3.5、4.0で動作確認済み)
INSERT INTO CUSTOMER_OKI_HO
SELECT *
FROM
[SELECT * FROM CUSTOMER WHERE PREFID = '02'
UNION SELECT * FROM CUSTOMER_HOKKAIDO]. AS A
189(複数テーブルからあるテーブルに重複データも含めてすべてを追加する)、
190(複数テーブルからあるテーブルに重複データも含めて新しいテーブルを作成する)についても、
ほぼ同様です。
(>>883 へ続く)
0884デフォルトの名無しさん
NGNG■ 212 あるカラムにNOT NULL制約を付ける (P254)
[Jet]
構文エラーとなり保存も実行もできません。誤りではありませんか?
■ 216 あるテーブルに新しいカラムを追加する (P257)
[Jet]
「ALTER TABLE文はサポートされていない」とありますが、誤りです。(P258の記述と矛盾します。)
下記の構文で可能です。
ALTER TABLE CITY ADD COLUMN ADDRESS LONG NULL
(>>885 へ続く)
0885デフォルトの名無しさん
NGNGこの他、解説が不足していると思われる箇所が複数。
Jet のSQLで記述が冗長、または最適ではない(不要なのにFormat関数を使用、DateSerial関数を
使用すべき局面でFormat関数を使用、など)な箇所が多数。
>>883 参照先のポインタ間違えますた。 m(_ _)m
0886デフォルトの名無しさん
NGNGか?ExcelVBAの勉強と一緒にできたらいいかな、と思って。VBAからいろいろクエリーかけたりしたいんです。おながいします。
0887デフォルトの名無しさん
NGNGSQLite + ODBC or MySQL + ODBC がいいよ。
0888デフォルトの名無しさん
NGNGありがと。SybaseとSunのサーバーとか自分で持てないし。早速製品をウェブで探す。ODBCはもう入ってるからね。
0889デフォルトの名無しさん
NGNG今ちょっとMySQLサイト見てみたんだけど、WindowsXPにのっているODBCじゃダメなの?ここ、自分のODBCも出してるけど。
0891デフォルトの名無しさん
NGNG会社で俺はVBプログラマとして働いている。ところが、いきなり
マイクロソフト・SQLについての小さな仕事が来た。
俺は「SQL???データベースの何かでしょ?」って感じなのだが
その小さな仕事を今週中にしなくてはならない。困った・・・。
会社の人に今更聞けないし・・・。
とりあえず、SQLってのはデータベースの何チャラってのはわかった。
そこで質問。いまVBでアプリを作っていて、それは、画面で色々条件を入力したら
その条件にあった唯一のExcelシートが立ち上がるようになっている。
ほいでSQLサーバーで「テーブル」って奴を見てみると、Excelシートと同じ内容の
データが書き込まれていた。
この「テーブル」ってのはどういう役目をするんでしょ???教えてけろ。
0892891
NGNGちゃんと人が一つ一つ打ち込んで作成しております。
0893デフォルトの名無しさん
NGNG倉庫の名前がテーブル名
倉庫の中の品物名がフィールド名
で保存する品物がデータって感じかな。
その倉庫の中身を検索して取り出す命令がSQL。
色々な条件をつけてデータを取り出すことができます。
補足・修正?があればどなたかよろしく。
0894891
NGNG有難うございます。
もし可能でしたら教えていただけると有難いのですが・・・。
上記で私が申しましたとおり、Excelシートと全く同じデータが
テーブルに書かれておりました。
この意味は・・・?一般的に当たり前の処理なのでしょうか???
厨房ですみません・・・。田舎在住で本屋にいっても本も何も無いんです・・・。
0895デフォルトの名無しさん
NGNG知ってる範囲で答えます。ぼくも今日XPに乗るSQLに関して世話になったので。
DBサーバー
DB
テーブル
という階層をイメージしてください。
テーブルには、行と列があり、ソートしたり、検索したりできます。
で、レコードというのがあり、その中にはフィールドがあります。
ですから、Excelの階層と対比しようと思えばできますね。
どう?イメージ描けましたか?
MSSQLの仕事するんだったら、ExcelVBAを使ってクエリー(データ抽出要求みたいなもの)
をかけることばっかりだと思うんですけど、SQLっていうスクリプト言語は知ってますか?
select * from XXX.BBBB.CCCC
where
record = "some match"
なんちゃらかんちゃら、です。ぼくも8ヶ月ぐらい全く走らせていないので、かなり忘れましたけど。
0896デフォルトの名無しさん
NGNGデータを入力するのに、アプリでデータベースに入力してエクセルでもまた同じ内容を入力する処理が無駄では?
って質問ですか?
エクセルのファイルをどういう形で使用されるのか分かりませんが
まったく同じ内容を二度入力するのは一般的では無いですね。
また、質問を間違って解釈してる可能性あり・・・
0897891
NGNGええと・・・VBのフォームで作った画面に条件を入力し、
間違いがなければそれに対応した唯一のExcelシートが立ち上がる、
というアプリなんです。
そのExcelシートはちゃんと人が作っているんですよ。
なのに、MS・SQLサーバのテーブルのなかにはExcelシートにあるデータが
ソックリそのまま書き込まれてるんです・・・。
・・・
これって・・・???
0898874-875
NGNG>>876
別に業務で困ったということでなく
自分では�@のSQLで問題ないと思っていたので
それが動かないのがどうも気になってしまったので
>>878
ありがとうございます。
いま家のoracle8iで試してみたら
教えていただいた方法で更新できました
(なぜ家のマシンにそんなものが入っているかは聞かないで)
これから。自分のSQLの問題点について考えてみます。
0899デフォルトの名無しさん
NGNG確認したいのだが、お前の見てるアプリというのはすでにあるものだよな?
ソースを読んだりできないの?
で、テーブルがなにかというと、Excelのシートの中のデータそのものだな。
アプリの仕様を書き込みから想像すると、
・人が作ったExcelをどこかにおいておく
・検索条件を入れてExcelシートを開くと、DBに中身が書き込まれる
とかじゃないかと。
何でそんなことをしてるんだとか疑問はあるが。
つーか、意味がわからんのなら恥ずかしくても回りに聞けよ。
0900デフォルトの名無しさん
NGNG本来エクセルシートとして管理しているものだが、
検索用途のためだけにすべての内容をDBに取り込んでいる
故に、897の言っているテーブルの目的は
1、画面入力された条件にマッチするレコードを検索する。
2、そのレコードには元のエクセルファイルのパスが含まれている。
3、エクセルファイルを開く
という事では?
はずしていたらゴメン。
0901デフォルトの名無しさん
NGNG0902デフォルトの名無しさん
NGNGsql for smarties
0903デフォルトの名無しさん
NGNG本屋もないような僻地(離島?)に住んでいるのですね。
(ご不便なことで・・・)
0904ねこま
NGNG初心者向けとは言えないと思いますが……
いつかは手に取る本といった所か
0905デフォルトの名無しさん
NGNG高いけど実例が多くて重宝する。
まぁOracle向けといっても普通にSQLは学べます。
0906デフォルトの名無しさん
NGNGじゃ、おいらはSOFTBANKの「SQLハンドブック」を勧めるよ。
SQL-92, Oracle, SQLServer, Accessに対応してるよ。
0907デフォルトの名無しさん
NGNGSQLハンドブックとOracleSQLエキスパートリファレンスを注文してみました。
>>903
すみません。中身見ても良い本か悪い本かの判断が出来なかったものですから。
0908デフォルトの名無しさん
NGNG振るようにしたいんですが、やり方がわかりません。
PostgreSQLだとCREATE TABLEの時に
DEFAULT nextval('seq_code')とするとできたのですが、
oracleだと、
「ここにはプロシージャ、ファンクション、パッケージ、型は使用できません」
言われました。
プロシージャを作らないとできないのでしょうか?
0909デフォルトの名無しさん
NGNGシーケンスデータを参照し、
それを新規行の対象カラムにセットする
トリガーを作ってみれ。
0911897
NGNG今日は職場からあるサイトでSQLをしこたま勉強しました。
そこで質問。
SQLサーバのテーブルに「ヨーロッパの人口」という名前のテーブルがあったとする。
横に「イギリス、フランス・・・・」とヨーロッパの国の名前がずらりと並んで
いて(MS SQLで言えば、灰色のセル)、縦には0歳から106歳までの各年齢の人口が
それぞれ総合・男女別に入力されているとする。
そのとき、たとえばVBのアプリでこのデータをExcelに呼び出そうとした場合、
このままだと全ての国の人口が呼び出されてしまうが、VBAを使わずにSQLとVBのみで
フランスの人口のみを呼び出すことは可能でしょうか?
解りづらい説明ですがよろしくお願いします。
0912デフォルトの名無しさん
NGNGselect イギリス, フランス
from ヨーロッパの人口
これでイギリスとフランスの0歳から106歳までの
各年齢の人口が取得できる。
にしてもなんちゅうテーブルレイアウトやまったく。
0913デフォルトの名無しさん
NGNG分かりづらいと言うより分からねえよ。分かりたくもない気分だけど。
少なくともソフトウェアで飯食ってんならデータ構造くらいキチンと
示せるようになってくれ。 2chと言えども、それだけで質問に対する
回答の質が変わってくるぜ?
>>912
ExcelのワークシートをDBにImportする為だけのテーブルなんじゃないの?
いや、そうであって欲しいと願うばかりだけどね。
そうでなかったら終わってる・・・
0914デフォルトの名無しさん
NGNGお勧め。
「理科系の作文技術」
http://www.amazon.co.jp/exec/obidos/ASIN/4121006240/249-4320084-2130722
「日本語の作文技術」
http://www.amazon.co.jp/exec/obidos/ASIN/4022608080/ref=pd_sim_dp_2/249-4320084-2130722
0915デフォルトの名無しさん
NGNG小学生相手にマジレスするなよ。
0917デフォルトの名無しさん
NGNG0918デフォルトの名無しさん
NGNGトリガーやれよ・・・
0919デフォルトの名無しさん
NGNGどちらかのテーブルにデータがあればデータを取得したいのですが
どのようにしたら良いのでしょうか?
Left Join Right Join だと どちらかにあればになってしまいます
0920デフォルトの名無しさん
NGNG0921デフォルトの名無しさん
NGNG単純にUNIONじゃ駄目?
0922デフォルトの名無しさん
NGNG??
多分UNIONでできると思うんだけど、質問がよく分からない。
0923デフォルトの名無しさん
NGNG0924デフォルトの名無しさん
NGNGFull Joinで出来ました。
皆様 ありがとうございました。
0925妄想厨房(33歳、童貞)
NGNGSQLってエッチやね。(w
0926デフォルトの名無しさん
NGNG0927デフォルトの名無しさん
NGNG0928デフォルトの名無しさん
NGNG>>867 >>880-885
他の出版物も内容の精度はイマイチみたい。(w
ttp://www.shuwasystem.co.jp/cgi-bin/support_sort.cgi
0929デフォルトの名無しさん
NGNGttp://www.shuwasystem.co.jp/books/7980/0199-6/0199-6.html
著者名表記の誤りにワラタ
0930デフォルトの名無しさん
NGNG「シーケル」なんですか?
0931デフォルトの名無しさん
NGNGはじめにIBMで設計されたモデルが SEQUEL (シークェル) だそうだ。
その影響からか SQL (エスキューエル) のことも シークェル と
呼ぶ人がいる。・・・が、通ぶってるように見えてカッコ悪いので
普通に エスキューエル と発音することをオススメする。
シークェルなどと発音するお馬鹿さんを見かけたら、
お前、IBM の SEQUEL 使ったことあるんか、と小一時間・・・
0932デフォルトの名無しさん
NGNG0933デフォルトの名無しさん
NGNG欧米では、エスキューエルでは通じないらしいですね。(どこで読んだ話か忘れたけど)
まあ、国内でしか仕事をしない人の方が多いし、外国とやりとりが発生するにしても、会話ではなく、
文書でコミュニケートすることの方が多いだろうから、問題になることは少ないと思いますが。
0934デフォルトの名無しさん
NGNGSELECT文でデータを抽出するとき「nedan」というカラムが
100でありかつ200であるものを選択する場合
SELECT * FROM データベース名 WHERE nedan = "100" and nedan = "200"
とすると思うのですが
SELECT * FROM データベース名 WHERE nedan = "100" and "200"
のようにすることも可能でしょうか?
または別の表記方法があるのでしょうか?
わかりづらいかもしれませんがよろしくお願いします。
0935デフォルトの名無しさん
NGNG> こんばんは。SQLがよくわからないので質問させていただきます。
> SELECT文でデータを抽出するとき「nedan」というカラムが
> 100でありかつ200であるものを選択する場合
「かつ」と「または」の区別がついてないとおもわれ(w
まずは日本語の勉強をしましょう。
ちなみに解答例は
SELECT * FROM データベース名 WHERE nedan in ( '100', '200' )
とか
SELECT * FROM データベース名 WHERE nedan = '100' or nedan = '200'
ね♪(nedanが文字列型の場合)
オラクルしか知らんのだけど、"とかでくくるDBもあるんかなぁ?
0936デフォルトの名無しさん
NGNG0937デフォルトの名無しさん
NGNG>SELECT * FROM データベース名 WHERE ...
個人的には「FROM テーブル名」の方がしっくりくるんだが。
なんかDBのインスタンス名指定してるみたい...。
0938デフォルトの名無しさん
NGNGDBじゃ無いって話は別にして
SQL文が使えるって事で「アクセス」
0939デフォルトの名無しさん
NGNGすでに>>935氏のコメントがついているが、
左辺 = '100' であり、かつ
左辺 = '200' でもある、ということは論理的にあり得ない。
>>935
Jetでは、シングルクォート、ダブルクォートのどちらも使えます。
(Jetではなく、ミドルウェアの機能かもしれないが・・・?)
0940デフォルトの名無しさん
NGNG0941デフォルトの名無しさん
NGNG(1) 書籍で調べる。
(2) WEBで調べる。
(3) お金払って業者に依頼する。
のどれか。
(環境すら書いていない質問はDQN決定)
0942935
NGNG今自分はデータ検索プログラミングをしているのですがどうもうまくいかなくて。
適当な検索語を入れて検索した結果からさらに別の語を追加して検索したいのですが
どうもうまいアルゴリズムがわかりません。
はじめに検索した結果をどこかに保持しておく必要があるんでしょうかねぇ。
もし手助けしていただけるのなら助言いただけないでしょうか?
スレ違いだったらごめんなさい。
0943934
NGNG0944デフォルトの名無しさん
NGNG質問内容が漠然とし過ぎていて、
(1) 使用している開発環境(OS、開発ツール)
(2) 具体的なプログラム内容(ソースコード)
(3) 原状の問題点(どこまでできていて、どこからうまくいかないのか)
が読み取れません。
失礼ながら、ANDとORの意味すら他人に尋ねなければ理解できないようですし、
プログラミングの適性がないように見受けられます。
0945デフォルトの名無しさん
NGNG単純にJOINか二重ループで出来そうな気もするが?
質問が漠然としているなぁ
0946デフォルトの名無しさん
NGNGんじゃヒントだけ。
その処理を、コンピュータを使わずにやる時どうするか考えれ。
ハッキリしたら、プログラムなりSQLなりでそれを実現する方法を考えれ。
あと、最低限>944の指摘されてる事は書け。
0947SQL92保存会
NGNG早速ですが、SQL Server で PostgreSQL の DISTINCT ON みたいなことを
するにはどのような SQL 文を書けばいいのでしょう?よろしくお願いします。
0948ひよこ名無しさん
NGNGたとえばCRDBインスタンスのADAMSユーザからORCLのSCOTTユーザのテーブルEMPをSELECT * したいです。
DBはOracle8iです。
0949て。 ◆qnISHi2Po.
NGNGcreate database link unko
connect to scott identified by tiger
using '接続文字列(tnslsnr.oraで定義しれ)'
select * from EMP@unko;
0950デフォルトの名無しさん
NGNG全レコードで、ある一つの項目が重複しているかどうか調べるSQL、
または、重複しているレコードを表示させるSQLってあるでしょうか。
もし重複していなかったら、そのテーブル定義を作り直して
主キーにしたいのです。
どなたかよろしくお願いします。
0951デフォルトの名無しさん
NGNGある。
>もし重複していなかったら、そのテーブル定義を作り直して
>主キーにしたいのです。
どんな状況だよ。それ。
0952デフォルトの名無しさん
NGNG0953て。 ◆qnISHi2Po.
NGNGこんなかんじかな オラクルだけど
select
nvl(a, 'NULLだバカ野郎')
, count(nvl(a, 'NULLだバカ野郎'))
from unko
having count(nvl(a, 'NULLだバカ野郎')) > 1
group by a
0954て。 ◆qnISHi2Po.
NGNG○group by nvl(a, 'NULLだバカ野郎')
0955IP記録実験
NGNGhttp://qb.2ch.net/test/read.cgi/accuse/1042013605/
1 名前:ひろゆき ◆3SHRUNYAXA @どうやら管理人 ★ 投稿日:03/01/08 17:13 ID:???
そんなわけで、qbサーバでIPの記録実験をはじめましたー。
27 名前:心得をよく読みましょう 投稿日:03/01/08 17:20 ID:yL/kYdMc
SETTING.TXT管轄でないということは全鯖導入を視野に、か?
38 名前:ひろゆき ◆3SHRUNYAXA 投稿日:03/01/08 17:22 ID:rLfxQ17l
>>27
鋭いです。
73 名前:ひろゆき ◆3SHRUNYAXA 投稿日:03/01/08 17:27 ID:rLfxQ17l
>ところで、IPが抜かれて何か今までと変わることってあるのでしょうか?
・今までより、サーバが重くなる。
・裁判所や警察からの照会があった場合にはIPを提出することがある。
0956デフォルトの名無しさん
NGNG0957デフォルトの名無しさん
NGNGもう買った。
0958IP記録実験
NGNGhttp://qb.2ch.net/test/read.cgi/accuse/1042013605/
1 名前:ひろゆき ◆3SHRUNYAXA @どうやら管理人 ★ 投稿日:03/01/08 17:13 ID:???
そんなわけで、qbサーバでIPの記録実験をはじめましたー。
27 名前:心得をよく読みましょう 投稿日:03/01/08 17:20 ID:yL/kYdMc
SETTING.TXT管轄でないということは全鯖導入を視野に、か?
38 名前:ひろゆき ◆3SHRUNYAXA 投稿日:03/01/08 17:22 ID:rLfxQ17l
>>27
鋭いです。
73 名前:ひろゆき ◆3SHRUNYAXA 投稿日:03/01/08 17:27 ID:rLfxQ17l
>ところで、IPが抜かれて何か今までと変わることってあるのでしょうか?
・今までより、サーバが重くなる。
・裁判所や警察からの照会があった場合にはIPを提出することがある。
0959デフォルトの名無しさん
NGNGマイルドセブン買ってきてくれ
0960デフォルトの名無しさん
NGNG0961デフォルトの名無しさん
NGNG0962デフォルトの名無しさん
NGNG2ちゃんねるのお勧めな話題と
ネットでの面白い出来事を配送したいと思ってます。。。
===============================読者数: 138720人 発行日:2003/1/9
年末年始ボケがそろそろ収まり始めた今日このごろのひろゆきです。
そんなわけで、年末に予告したIP記録ですが実験を開始しています。
「2ちゃんねる20030107」
こんな感じで各掲示板の最下部に日付が入ってるんですが、
20030107以降になってるところはログ記録実験中ですー。
んじゃ!
────────────────────────Age2ch─
■この書き込みは、Age2chを使って配信されています。
────────────────────────────
Keep your thread alive !
http://pc3.2ch.net/test/read.cgi/software/1041952901/l50
────────────────────────────
0963デフォルトの名無しさん
NGNGテーブル T01, T02 があり、
この2つはスキーマが似ていますが異なります。
ただしどちらも col1 を持っているとします。
このテーブル T01, T02 に、
col1 を外部キーとして
子供として共通のテーブル X をひもづけたいのです。
ALTER TABLE [dbo].[X] ADD
CONSTRAINT [FK_X_T01] FOREIGN KEY
(
[col1]
) REFERENCES [dbo].[T01] (
[col1]
),
CONSTRAINT [FK_X_T02] FOREIGN KEY
(
[col1]
) REFERENCES [dbo].[T02] (
[col1]
)
(続く)
0964デフォルトの名無しさん
NGNG「T01 と X」または「T02 と X」のように
どちらかの組でデータを入れるため
FK 違反になってしまいます。
X を X01, X02 のように2つに分ければよいのですが、
X のようなテーブルがたくさんあり、
すべてを2つのテーブルに分けなくてはなりません。
何かよい方法はありますか?
SQL Server2000 です。
0965デフォルトの名無しさん
NGNGカラムを2つに分けたら?
col1_1(T01を参照)とcol1_2(T02を参照)
ともにNULL値可。
0966デフォルトの名無しさん
NGNGItem Object Number
---- ------ ------
Baibu Onany 10
Baibu anaru 20
Baibu oral 30
Roter Onany 5
Roter anaru 13
このときSQL文で、「BaibuのNumberのみをSumしてBaibuの行の最後に
小計を表示させ、そのItem欄には"Baibu小計"と表示させる。Roterは表示させない」
ということは可能だろうか???
Rollupでも無理のような気がしたけども・・・。
0967デフォルトの名無しさん
NGNGキタ━━━━━━(゚∀゚)━━━━━━ !!
今から幼女誘拐してくる(;´Д`)ハァハァ
0968デフォルトの名無しさん
NGNG|ヽ''~ ̄ ̄ ̄~`ヾ
/_,,,.. ..,,,_.`v_'`、
/: ━ ━ | ニ_} / ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
|:: ∈∋ ヽ | <わたしを好きなだけ殴って下さい。
//:: -=,=.ヮ. |ヽ、| \
/'../:: /∠.._ |、.ノ  ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄
/':::|:::  ̄ ̄ |./
!-'L|::. v'
. ヾ:::.. /
. , ゞ、、;;;,,_,,,..._;;;;;__,,..ノ、
'ー┐,,..、_ ノ l_,,,...、 _,,一`
0969デフォルトの名無しさん
NGNG並べ替える際にNULL値の行が先頭に来てしまいます。NULL値の行を
最後にもってきたいのですが、何か方法はないでしょうか?
そのNULL値を含むカラムとは、OUTER JOINの結合の際でできた
カラムな為、NULL値を含んでいます。
使用DBは、PostgreSQL 7.2.3です。
0970デフォルトの名無しさん
NGNG0971デフォルトの名無しさん
NGNGORDER BY句に
COALESCE(対象INTカラム,INTの範囲(2^32か?)までの適当なでかい数値)
でどうだ?
0972969
NGNGCOALESCE(対象INTカラム,MAX(対象INTカラム) + 1)
でもいいと思うけど。
0973デフォルトの名無しさん
NGNG0974デフォルトの名無しさん
NGNGs/969/971
ダター
0975デフォルトの名無しさん
NGNG0976デフォルトの名無しさん
NGNG0977969
NGNGThanks。
coalesce関数を初めて知ったよ。order by句で使っても
ダメだったけど、
select coalesce(対象INTカラム, 0) as number from xxx where xxx order by number
でいけたよ。
0978デフォルトの名無しさん
NGNG年収とかどのくらいなんだろう。そうとうケチだとは聞いてるけど。
0979デフォルトの名無しさん
NGNGさーど じゃなくて さんど だろ。
0980デフォルトの名無しさん
NGNG0981デフォルトの名無しさん
NGNGないし、書き込みがすぐ全部のパソコンに反映されないからニュース速報には向いていない)
とりあえず今ある他掲示板のニュース関係の板を探してみる、
ニュース速報@Megabbs
http://www.megabbs.com/news/index.html
ニュース速報@MILKCAFE
http://www.milkcafe.net/news/
ニュース雑談@sub-all
http://www.bbs2.net/news23/
経済@いちごびびえす
http://matari.ichigobbs.com/economy/
まあ別に何かやばいネタを書くとか以外だったら別にIP取られても大丈夫なんだろうけど、
そういうやばいネタの中から祭りってのは発生するんだよなあ、、、
0982デフォルトの名無しさん
NGNGSELECT
CASE
WHEN GROUPING(Item) = 0 AND GROUPING(Object) = 0 THEN Item
WHEN GROUPING(Item) = 0 AND GROUPING(Object) = 1 THEN Item+'小計'
WHEN GROUPING(Item) = 1 AND GROUPING(Object) = 1 THEN '中計'
END AS Item,
Object, SUM(Number) AS Number
FROM TABLE1
WHERE Item = 'BAIBU'
GROUP BY Item, Object WITH rollup
HAVING Item <> '中計'
0983982
NGNG0984デフォルトの名無しさん
NGNG失敗する条件って何かありま
0985デフォルトの名無しさん
NGNG0986デフォルトの名無しさん
NGNGど う う ま く い か な い の か ち ゃ ん と 書 け ハ ゲ
0987デフォルトの名無しさん
NGNGa.no b.no
1 4
2 5
3 6
このような二つのテーブルを結合させてSQL実行すると
select a.no,b.no
from a,b
where
a.no = b.no(+)
a.no b.no
1 null
2 null
3 null
というように表示されてしまいますです
何故でしょう?
0988デフォルトの名無しさん
NGNG正しい結果だとしか言えないんだが・・・
0989デフォルトの名無しさん
NGNG実際にはこのように表示させたいのですが・・・
a.no
1
2
3
4
5
6
どのように書けばよいのでしょう?
色々やってみましたがダメでした・・・
おねがいしますm(_ _)m
0990デフォルトの名無しさん
NGNGすてられたのか?
0991デフォルトの名無しさん
NGNGselect no from a
union all
select no from b
何も考えずにこれを使え。
そしてSQL使わないプロジェクトに移してもらえ。
0992デフォルトの名無しさん
NGNGunion使わないとダメですか?
外部結合でいけると思ったのですが
0993デフォルトの名無しさん
NGNG0994デフォルトの名無しさん
NGNGUNIONと外部結合を1から勉強しやがれこのハゲ!
それがいやなら素直に>991に従えこのハゲ!
0995デフォルトの名無しさん
NGNG0996デフォルトの名無しさん
NGNGメルマガまってるよ。
0997デフォルトの名無しさん
NGNGすげー
0998デフォルトの名無しさん
NGNGhttp://pc3.2ch.net/test/read.cgi/tech/1042208762/l50
0999デフォルトの名無しさん
NGNG関連スレはとりあえず、このスレのをまず貼っておくよ。
補完はその後で・・・
1000デフォルトの名無しさん
NGNG10011001
Over 1000Threadもう書けないので、新しいスレッドを立ててくださいです。。。
レス数が1000を超えています。これ以上書き込みはできません。