X



トップページDB@2ch掲示板
1002コメント319KB
SQL質疑応答スレ 18問目
レス数が1000を超えています。これ以上書き込みはできません。
0657NAME IS NULL垢版2018/12/09(日) 18:58:36.79ID:???
欲しい結果がよくわからん

4に1〜3をJOINするだけじゃダメなのか?
0658NAME IS NULL垢版2018/12/11(火) 21:37:14.11ID:???
この板誰も人いないけど、他にデータベースの話題扱う場所あるの?
0659NAME IS NULL垢版2018/12/12(水) 07:07:27.08ID:???
ここはSQLの板だから
DBは別にあるだろ
0660NAME IS NULL垢版2018/12/14(金) 13:53:33.51ID:???
スレはSQLだが、ここはデータベース板
0661NAME IS NULL垢版2018/12/17(月) 17:59:53.76ID:???
Oracle 12cでのSQLに関する質問です。

2つのDATE型のカラムの差をhh:mm:ssで出力したいです。


開始日が2018/12/13 7:00:00
終了日が2018/12/17 17:30:30
だとして、この2つの差(経過時間)の出力結果は
106:30:30
と出したいのですが、出来るだけ簡単に計算して出す方法ありますでしょうか?
(時・分・秒でそれぞれ分解して掛け算して計算する方法がネット上にありましたが、もう少しシンプルにできないか模索しています。)
良い御知恵がありましたらご教示お願い致します。
0662NAME IS NULL垢版2018/12/17(月) 18:56:46.00ID:???
質問です。
製品のメジャーバージョン、マイナーバージョンという2列があり、
メジャーバージョンが最大の中から、
マイナーバージョンも最大の行を取り出すにはどうしたらいいでしょうか?

postgresql9です。
0663NAME IS NULL垢版2018/12/17(月) 19:37:22.24ID:???
>>662
postgresql9手元で動かせません。MariaDBです
テーブル名はproductと仮定しました

select * from product
where (major_ver,minor_ver) in (
select major_ver,max(minor_ver)
from (
select major_ver,minor_ver
from product
where major_ver = (select max(major_ver) from product )
) as t
);
0664NAME IS NULL垢版2018/12/18(火) 00:22:00.75ID:???
>>663
なるほど。メジャーの最大グループからマイナーの最大を取った where in句ですか
ありがとうございます。
0665NAME IS NULL垢版2018/12/18(火) 01:53:40.53ID:???
window関数使うともっと綺麗に書ける気がする

俺はwindow関数苦手だから書けないが
0666NAME IS NULL垢版2018/12/18(火) 23:18:20.88ID:d1jtTCeB
>>661
あんたはDATE型が文字列だとでも思っているのか?
0667NAME IS NULL垢版2018/12/27(木) 14:42:38.04ID:???
a. 顧客テーブル(顧客コード, 顧客名)
b. 商品テーブル(商品コード, 商品名)
c. 売上テーブル(売上日, 顧客コード, 商品コード, 売上数)

売上日, 顧客名, 商品名, 売上数

このように結果が表示されるSQL文を教えてください
0668NAME IS NULL垢版2018/12/27(木) 15:25:29.94ID:???
何か基本のキって感じ
これが書けないとヤバいと思う
0669NAME IS NULL垢版2018/12/27(木) 15:29:31.60ID:???
こういうのって内部と外部とどっちで繋ぐのがよろしいの?
それとも、JOINではなくWHERE内でキーを繋いであげればいいの??
0671NAME IS NULL垢版2018/12/27(木) 19:28:59.29ID:???
まだ書かれていない要求仕様があるんじゃない?
読み取れる範囲だとどっちでも良いように思う
0672NAME IS NULL垢版2018/12/28(金) 01:38:09.32ID:???
>>667
select 売上日, 顧客名, 商品名, 売上数
from 売上テーブル
inner join 顧客テーブル on 顧客テーブル.顧客コード=売上テーブル.顧客コード
inner join 商品テーブル on 商品テーブル.商品コード=売上テーブル.商品コード

>>669
FROMに複数テーブル書いてwhereに結合条件書くのは今は推奨されない
内部か外部かは、商品テーブルにない商品売ってたり顧客テーブルにない顧客に売ってたりしない限りどちらでも同じ結果
どっちでもいいなら普通は内部結合にするんじゃね
0673NAME IS NULL垢版2018/12/28(金) 08:19:26.48ID:???
>>672
ありがとうございます
メモしておきます
0674NAME IS NULL垢版2018/12/28(金) 16:26:23.93ID:???
外部キーがあればinnerなければleft joinかな
0675NAME IS NULL垢版2018/12/28(金) 22:03:16.91ID:???
このなかで一番美人なのって真ん中だよね?深キョンレベルだと思うのだが
ちなみに向かって右は目も鼻も整形してるって本人が公言してるけどそれ抜きにして誰が一番美人だと思う?
http://bigsta.net/media/1933567086757747003_3564907098
0677NAME IS NULL垢版2018/12/29(土) 10:58:20.71ID:???
>>672
そうなのか、勉強になったわー。
講習受けたときはJOINで教わったのに、実際にWHEREで書かれたの使ってる人たちがいて何でだろうと不思議だったんだけど、
歴史的な表記ぶれみたいなもんなんだな。
商品登録がない商品を売ってる可能性とかも全然思いつかなかった。
0678NAME IS NULL垢版2018/12/29(土) 11:00:50.31ID:???
>>674
外部キー無いけど繋ぐって、どんなシチュエーション??
0679NAME IS NULL垢版2018/12/29(土) 19:17:07.38ID:/5Z8+3Hw
>>677
結合条件をFROM句にしたのは標準SQL。ただ構文が長ったらしいのは失敗だった。
0680NAME IS NULL垢版2018/12/29(土) 19:20:03.23ID:/5Z8+3Hw
>>672
推奨されない?

そんな嘘を書くな。

製品によって結合条件の構文の一部が非推奨になっただけ。
0681NAME IS NULL垢版2018/12/29(土) 19:21:06.30ID:/5Z8+3Hw
>>677
上の世代からするとなんでFROM句に書きたがるのか疑問なんだよ。
0682NAME IS NULL垢版2018/12/30(日) 09:09:04.13ID:???
どのテーブルにも脳死したかのように
createdとupdatedっていうtimestampなカラムがあるんですが普通なんですか?

都道府県テーブル
id 県名  作成日 更新日
1 北海道 2018略 2018略
2 岩手県 2018略 2018略

こんな具合に定数のような項目にもあります
0683NAME IS NULL垢版2018/12/30(日) 10:10:04.61ID:???
>>681
結合の条件なのか検索の条件なのかが分かりやすいからだろ
0684NAME IS NULL垢版2018/12/30(日) 10:21:46.45ID:???
Whereに結合条件書くと順番が制御できないから外部結合で結果が不定になることがあるってのがあったな
0685NAME IS NULL垢版2018/12/30(日) 10:43:00.11ID:???
>>682
テーブル設計の基本ルールとして定めていることは特に珍しくはないと思う
本当に必要か?という議論をすることは可能だが
どっちに転んでも誰も得をしないので誰も言い出さない
0686NAME IS NULL垢版2018/12/30(日) 11:02:25.62ID:BcIhhlay
>>682
マスタこそあった方がええで
0687NAME IS NULL垢版2018/12/30(日) 11:30:39.57ID:???
普通かどうかよりも、テーブル設計書を見た方が良いかと
0689NAME IS NULL垢版2019/01/04(金) 14:56:54.45ID:/aoZaVbi
>>683
それを言い出すとWHERE句が不要になる。絞り込み条件もFROM句に書けるし、若い人間で知識がないとひとつのテーブルでレコードを絞り込んで結合させた方がいいなどと言い出して、全部FROM句に行ってしまう。
0690NAME IS NULL垢版2019/01/04(金) 14:57:46.66ID:/aoZaVbi
>>684
根本的にSQLをわかっていない。SQLの書き方で処理が決まるわけではない。
0691NAME IS NULL垢版2019/01/04(金) 15:01:34.82ID:/aoZaVbi
>>682
自分がシステムのテスト、運用・保守をしていたらわかるよ。複数人でテストをし始めたら、誰がいつ作ったのか、誰がいつ更新したのかわからなくなり、チーム作業が成立しない。
0692NAME IS NULL垢版2019/01/04(金) 15:15:54.95ID:???
>>690
>SQLの書き方で処理が決まるわけではない
から、そのときの実行計画次第で結果か変わるって話だけど?
意味わかってレスしてる?
0693NAME IS NULL垢版2019/01/04(金) 16:00:36.58ID:???
where句に結合条件を書こうとすると外部結合のとき困るよな
Oracleは(+)を使ってwhere句で外部結合が今でもできるけど推奨してない
SQL Serverでも似たような演算子が昔あったけどもうサポートされてない
0694NAME IS NULL垢版2019/01/04(金) 16:24:03.25ID:???
from句は、集合を作る処理で、where句とselect句で選択範囲を決定しているんだろ?
0695NAME IS NULL垢版2019/01/04(金) 16:47:25.40ID:/aoZaVbi
>>692
製品は人間の感覚を意識して実装されているが、SQLの仕様ではない。
0696NAME IS NULL垢版2019/01/04(金) 16:52:31.34ID:???
>>694
RDBの教科書的に言えば直積(from)→選択(where)→射影(select)だな。
0697NAME IS NULL垢版2019/01/04(金) 19:11:32.12ID:???
>>695
SQLの仕様的に不定な結果を除去できないから推奨しないって話をしてたんだけど

製品ってなに?SQLが人間の感覚を意識して実装されてるって?
3値論理とか、不定な結果とかが感覚的なのかよ。常人とは違う感覚もってるらしいな
0698NAME IS NULL垢版2019/01/05(土) 00:09:10.98ID:apNAc+7p
言うことはわかるが、具体的にどの製品のデフォルト設定を想定しているのか?

外部結合の構文は、どの製品も標準SQLの構文にも対応するが、個々の製品の独自拡張もまた進んでいる。

あなたの言うことで気になるのが、実行計画によって結果がかわるという点で、そんなポンコツ製品は使わない方がいい。
0699NAME IS NULL垢版2019/01/05(土) 00:13:44.83ID:???
議論するときはID表示にするかトリップ付けてくれよ
誰が何を言っているか追いかけられない
0700NAME IS NULL垢版2019/01/05(土) 05:00:54.33ID:???
>>698
製品がポンコツなんじゃなくて、SQLのあいまいさの問題
まあ俺もかなり信じられなかったからな
実例もどっかで見たんだが見当たらん

AとBを外部結合したものにCを外部結合するのと、
BとCを外部結合したものにAを外部結合するのとでは結果が変わる
whereでの外部結合ではこの違いを表現できん、てな話だったはず

from A,B,Cと書くと、感覚的には前者で処理されると思い込むが
事項計画次第で後者で処理されることもあり得るって話だったはず
0701NAME IS NULL垢版2019/01/05(土) 08:11:08.17ID:???
>>700
OUTER JOINが導入される前の外部結合は製品毎の独自拡張なんだから
そこにあいまいさがあるならその製品の問題になるでしょ。
それともOUTER JOINにまだ曖昧さが残っているということ?
0702NAME IS NULL垢版2019/01/05(土) 20:01:36.96ID:???
>>701
だからwhereでの結合は推奨しないって話じゃないのか
0703NAME IS NULL垢版2019/01/05(土) 20:54:38.32ID:???
「だから」ってのはどこに係ってるの?
>>684が言っているように結果が不定になるというのはどの製品のことかって話なんだけど。
0704NAME IS NULL垢版2019/01/06(日) 11:15:47.69ID:LccedoWX
>>700
外部結合の条件が書かれていない。結合条件が異なるから結果が変わるのを実行計画の違いだと思っているのか?
0705NAME IS NULL垢版2019/01/06(日) 15:33:10.43ID:???
>>703
たしかオラクルだったはず
今探しても見当たらん。結構トリッキーなSQLではあった気がするんだが
原理的にwhereで外部結合すればどのDBMSでも起こり得るはずで特定製品の話ではないんだが

>>704
まったく同じSQLで結果が変わる事があるから不定って言うんだけど

まあ俺はwhereで結合する事はそれ以来やめたからもうどうでもいいや
実例だせない時点で説得力低そうだしな
0706NAME IS NULL垢版2019/01/06(日) 16:02:53.03ID:???
Oracleなら、解釈があいまいになりそうな記述は最初から弾かれたと思うが。

>原理的にwhereで外部結合すればどのDBMSでも起こり得るはずで特定製品の話ではないんだが

原理的もなにも、SQL標準のfromとwhereだけではそもそも外部結合を表現することはできないんで
各製品が独自に拡張していたわけ。そこに問題があるなら当然その製品の問題。
ってのは上で何度も指摘されているんだが。
0707NAME IS NULL垢版2019/01/10(木) 02:55:12.86ID:OduNBQgg
ヒカキンの年収が10億超え!?明石家さんま・坂上忍も驚愕の総資産とは??
https://logtube.jp/variety/28439
【衝撃】ヒカキンの年収・月収を暴露!広告収入が15億円超え!?
https://nicotubers.com/yutuber/hikakin-nensyu-gessyu/
HIKAKIN(ヒカキン)の年収が14億円!?トップYouTuberになるまでの道のりは?
https://youtuberhyouron.com/hikakinnensyu/
ヒカキンの月収は1億円!読唇術でダウンタウンなうの坂上忍を検証!
https://mitarashi-highland.com/blog/fun/hikakin
なぜか観てしまう!!サバイバル系youtuberまとめ
http://tokyohitori.hatenablog.com/entry/2016/10/01/102830
あのPewDiePieがついに、初心YouTuber向けに「視聴回数」「チャンネル登録者数」を増やすコツを公開!
http://naototube.com/2017/08/14/for-new-youtubers/
27歳で年収8億円 女性ユーチューバー「リリー・シン」の生き方
https://headlines.yahoo.co.jp/article?a=20170802-00017174-forbes-bus_all
1年で何十億円も稼ぐ高収入ユーチューバー世界ランキングトップ10
https://gigazine.net/news/20151016-highest-paid-youtuber-2015/
おもちゃのレビューで年間12億円! 今、話題のYouTuberは6歳の男の子
https://www.businessinsider.jp/post-108355
彼女はいかにして750万人のファンがいるYouTubeスターとなったのか?
https://www.businessinsider.jp/post-242
1億円稼ぐ9歳のYouTuberがすごすぎる……アメリカで話題のEvanTubeHD
https://weekly.ascii.jp/elem/000/000/305/305548/
世界で最も稼ぐユーチューバー、2連覇の首位は年収17億円
https://forbesjapan.com/articles/detail/14474
0709NAME IS NULL垢版2019/01/19(土) 19:14:46.35ID:???
>>708
>>35で[KEY]を"KEY"にすれば標準SQLになると思う
IDが予約語のDBもあると思うが標準では予約語じゃない
0711NAME IS NULL垢版2019/01/19(土) 19:44:11.08ID:???
row_number()使わないでやってみた

SELECT "TableA".*,"TableB"."ID2","TableB"."DATA" FROM "TableA"
LEFT JOIN (
SELECT "ID",MAX("KEY") AS "KEY" FROM "TableB" WHERE "KEY"<=2 GROUP BY "ID"
) AS a ON "a"."ID"="TableA"."ID"
LEFT JOIN "TableB" ON "TableB"."ID"="a"."ID" AND "TableB"."KEY"="a"."KEY"
ORDER BY "TableA"."ID"
0713NAME IS NULL垢版2019/01/19(土) 23:58:53.77ID:???
>>711
検証してみたんですが、
TableBに(8,2,3,'b_key3')を追加し、検索KEY=3にした時、
一番若いKEY=1を持って来れてません
0714NAME IS NULL垢版2019/01/20(日) 02:34:11.35ID:???

2より若いじゃ無くて2が無ければ一番若いKEYなのかな
KEY=3,4,5の場合3になる?
0715NAME IS NULL垢版2019/01/20(日) 02:37:14.35ID:???
なんかSQL貼り付けようとすると書き込みに失敗する
何故だ
0717NAME IS NULL垢版2019/01/20(日) 08:31:23.78ID:???
>>33みたいに場合分けを含むようなのは素直にunion allでやる方が見通しが良かったりする。
記述は冗長かもだけど。
0719NAME IS NULL垢版2019/01/23(水) 08:44:06.11ID:???
>>718
最初、>>716の16行目以降のSELECT文を書き込もうとしたら失敗したのよ
>>711だと書き込み成功してるのに何故だろうか?
どの部分が問題になっているか知ってる?
0720NAME IS NULL垢版2019/01/24(木) 23:55:34.12ID:???
チェックは途中のクラウドで行っているようです
SQLの特定のキーワードに反応しているみたい
引っかかるときもあれば引っかからないときもある
その辺の基準はよく分からないです
チェックする検査項目が変わるのかもしれない
0721NAME IS NULL垢版2019/01/25(金) 19:17:24.19ID:???
>>720
ありがとう

書いてみてエラーになったら外部サイトに貼るしかないか
0722NAME IS NULL垢版2019/01/25(金) 20:20:44.91ID:???
手間だけど、それが一番良いと思う
後は全角文字に置換して貼り付けるくらい
汚くはなるけど、説明と合わせて書きたい時は
こうすると良いかな
0723NAME IS NULL垢版2019/01/30(水) 21:50:00.13ID:faG5je+8
初めて質問させていただきます
SQLからPostgresへのデータ移行をC#使ってプログラム作ってます
csv吐き出しで移行させたいんですが、ダブル型のカラムのデータが.000や10.600という形で入ってるのですがどうにか0にする・余計な0を無くすことが出来るのでしょうか?
またそういう事が吐き出しの際指定出来るのでしょうか?
吐き出しはbcpでフォーマットを読ませてます
0724NAME IS NULL垢版2019/01/30(水) 22:08:09.72ID:???
FORMAT()関数とか言うのがあるんじゃねぇの?よく知らんけど
0725NAME IS NULL垢版2019/01/31(木) 14:53:40.26ID:kxiPGIi/
>>723
SQL ServerのことをSQL

CSVファイルのデータをわざわざC#でインポートプログラムを作ってインポート

エクスポートや出力にあたる言葉が「吐き出し」

初心者なのかクソ経験者なのか?
0726NAME IS NULL垢版2019/01/31(木) 20:03:35.35ID:???
>>725
自己解決しました
申し訳ない急ぎだったのでそういう書き方になってしまった
C#は移行という一貫性のあるプログラムです
SQL serverからPostgresへの移行と書いてあるように
目的の為の柔軟性もあるという意味合いで情報を付加しただけに過ぎないです
0727NAME IS NULL垢版2019/01/31(木) 21:14:34.97ID:kxiPGIi/
文字でデータを移行するのに数値型のデータをどう表現するのか指定を行っていない時点で初心者。
0728NAME IS NULL垢版2019/01/31(木) 21:18:44.70ID:???
>>726
どういう風に解決したのか書いておいて
0729NAME IS NULL垢版2019/02/01(金) 06:34:24.99ID:???
>>727
吐き出しはbcpでフォーマットを読ませてます
>>728
問題は別にありました
思いっきりbcp時にNULL文字の空白が…と警告が書いてあるのにも関わらずNULLIFでRTRIM関数を使用していないことが原因でした
ちなみに.000は0には出来ませんでしたがコンバートで代用しました
0730NAME IS NULL垢版2019/02/01(金) 09:44:22.12ID:???
根本的にアプローチ方法が違う様な気がする
山に登るのも好き好きだから
逆立ちして登りたい人もいるだろうし
0732NAME IS NULL垢版2019/02/01(金) 11:48:19.88ID:???
SQLパズルって本どうなの?実務で役に立つ?
0734NAME IS NULL垢版2019/02/01(金) 13:43:15.56ID:LPFd6PpO
今度はbcpの使い方を知らなかったということか。何もかもダメだな。
0735NAME IS NULL垢版2019/02/01(金) 14:28:44.76ID:???
bcpの使い方ってよりbcpの相互関係に気付けなかっただけだろ
0737NAME IS NULL垢版2019/02/10(日) 12:16:31.44ID:???
auto incrementって指定しなくても勝手に連番いれてくれないの?
0738NAME IS NULL垢版2019/02/10(日) 12:45:17.83ID:???
多義的質問で回答が難しい
0739NAME IS NULL垢版2019/02/10(日) 12:47:26.67ID:???
autoincrementのカラムを何も指定しないでinsertしても入らないのですか?
0740NAME IS NULL垢版2019/02/10(日) 13:20:09.88ID:???
それは無理だろう
作成時に指定した制約の範囲で値は入る
0741NAME IS NULL垢版2019/02/10(日) 13:42:14.39ID:???
じゃあ空のテーブルに1から連番のidを入れたいときどうしますか?
0742NAME IS NULL垢版2019/02/10(日) 14:00:53.96ID:???
取得時に連番を振れば良いので、そもそもの要求が正しくないと考えるべきだな
0744NAME IS NULL垢版2019/02/10(日) 15:01:33.42ID:???
>>742
取得時?自分で連番を入れろってこと?
>>743
postgresqlです
0745NAME IS NULL垢版2019/02/10(日) 15:05:49.46ID:???
データベースってどういう仕組みなの?一つのテーブルにファイルどれくらい使ってるの?
0747NAME IS NULL垢版2019/02/10(日) 17:54:40.38ID:RVblbfO4
>>741
必ず連番でないといけないか、まずはそこを考えた方がいい。
0748NAME IS NULL垢版2019/02/10(日) 18:22:16.70ID:6fMC7oP8
>>744
同時実行時にどうやって連番が振れるのか考えた方がいい。

ユーザーがよく連番にしてくれというが、データそのものが連番を持っている必要はない場合が多い。

シーケンスを使うと歯抜けになるが、歯抜けで何か問題がどうか聞け。

どうしてもやりたければ、番号を管理するテーブルを用意して、一瞬、テーブルをロックして最大値を求めてレコードを追加したり更新したりすることで実現する。

レコードが削除されたときは番号を降り直すのかどうかも事前に聞け。

ユーザーは単に表示されている件数とデータの番号が一致していたら、わかりやすい程度のことしか言っていない。
0750NAME IS NULL垢版2019/02/10(日) 20:11:17.09ID:???
>>746
これが何なのか読んでもわからんすw
というかORM使ってるのでこの型使えるのだろうか
>>747
>>748
確かに連番である必要は無いです
適当に被らない番号を振ってもらえれば良いんだけどそういう句はあります?
0751NAME IS NULL垢版2019/02/10(日) 23:07:57.76ID:???
>>750
どういうやり方で最初の空のテーブルを作成してますか?
0752NAME IS NULL垢版2019/02/11(月) 04:27:17.82ID:XERbxblT
>>750
シーケンスを作って、シーケンスから新しい番号を取る。

製品によって異なるから「PostgreSQL シーケンス NEXTVAL」のキーワードでくぐって勉強して。
0753NAME IS NULL垢版2019/02/11(月) 23:07:27.20ID:I14UVxY+
>>751
CREATE TABLE prices (
id INTEGER,
date DATE NOT NULL,
market_price INTEGER,
nav_price FLOAT,
retrieval_date DATE,
PRIMARY KEY (date)
)

というSQL です。id をインクリメントしたいんですが 

>>752
ググっても使い方がwかりませんでした
0754NAME IS NULL垢版2019/02/11(月) 23:12:13.51ID:XERbxblT
だめだこりゃ
0755NAME IS NULL垢版2019/02/11(月) 23:43:33.61ID:???
>>752
質問をいくつか

idを連番にして一意にしたいって事ですか?

dateをプライマリキーにしていますが、
このテーブルデータのデータを一意に特定したいときに
dateを指定するって事ですか?
0756NAME IS NULL垢版2019/02/12(火) 13:36:18.57ID:eWsZ2mFu
>>755
dateとは?
0757NAME IS NULL垢版2019/02/12(火) 17:33:47.98ID:???
date DATE NOT NULL,
PRIMARY KEY (date)
0758NAME IS NULL垢版2019/02/12(火) 19:40:53.09ID:???
>>746の回答で終わってる話だし、自分で調べる気がないようだから
これ以上構わないほうが良いぞ
0759NAME IS NULL垢版2019/02/12(火) 21:40:34.30ID:hyYi05zW
>>755
date で一意にしたいです

>>758
つまりカラムの型をSEREALにすれば良いんですね PRYMALY KEYにしか使えないんですね
0760NAME IS NULL垢版2019/02/13(水) 00:29:25.04ID:???
何をしたいのかがよく分からないけれど
率直に言うと、テーブル定義を見ただけで、これは酷いと思った
ここで質問するにしても基本が出来ていないと
質疑そのものが成り立たないと思う
一つ一つ教えてやれるほど暇な人はここにはいないと思うので
まず自力でテーブル設計の基本から学び直した方が良いだろう
0761NAME IS NULL垢版2019/02/13(水) 01:28:24.13ID:bwrqc7Ol
う〜ん厳しいっすね、
達人に学ぶDB設計指南書
という本を読んで出直してきます
ありがとうございました。
0762NAME IS NULL垢版2019/02/13(水) 11:26:56.25ID:???
教えてください。
12c ってWindows10Homeには対応していないのでしょうか?
インストールしようとすると、最初の段階でフリーズしてそのままなんですが。。。
それとも自分のやり方が間違っているのか?
0763NAME IS NULL垢版2019/02/13(水) 12:26:16.60ID:???
> それとも自分のやり方が間違っているのか?
Yes.

Oracleに聞け
0764NAME IS NULL垢版2019/02/13(水) 16:28:18.68ID:RDoKqAmg
>>762
Windows 10 Homeには対応していません。Windows 10 HomeはIT技術者が使うようなものではありません。
0765NAME IS NULL垢版2019/02/13(水) 19:12:25.52ID:???
Windows10でも64ビット版なら対応してるみたいだな
0766NAME IS NULL垢版2019/02/13(水) 23:53:03.82ID:???
おいおい、そもそも12cってなんだ?
0767NAME IS NULL垢版2019/02/14(木) 00:13:36.28ID:???
>>762
Win10Home x64 に Oracle12c 入れてるよ
Release2 だと言うように途中で止まったけど Release1 は最後まで行った
0768NAME IS NULL垢版2019/02/14(木) 00:51:18.49ID:rVmZaTkp
動くのとサポートしているかどうかは別問題。
0769NAME IS NULL垢版2019/02/14(木) 00:52:15.11ID:rVmZaTkp
こういう勝手な組み合わせで使って文句をサポートに言ってくる会社は必ずある。
0770NAME IS NULL垢版2019/02/14(木) 00:53:47.16ID:rVmZaTkp
>>766
視力検査で「みぎ」と言えば視力1.2と判断される。
0772NAME IS NULL垢版2019/02/15(金) 18:52:16.64ID:BQV0WL9f
基本情報の古い過去問のデータベースが解けません。解説してください。
平成18年度春期 基本情報 問1 空欄c 答えは「ア」
https://www.jitec.ipa.go.jp/1_04hanni_sukiru/mondai_kaitou_2006h18_1/2006h18h_fe_pm_qs.pdf

SELECT 社員ID FROM 社員表
WHERE 年齢 < ALL(SELECT 年齢 FROM 家族表
WHERE 家族表.社員ID = 社員表.社員ID)

副問い合せ、相関副問合せは理解しています。
副問合せの結果リストが0行の場合、なぜ<ALLの条件が成立してしまうのかわかりません。
oracleの環境で試してみたところ >ALL でも =ALL でも、副問合せの結果リストが0行の場合、真となるようでした。
よろしくおねがいします。
0773NAME IS NULL垢版2019/02/15(金) 19:58:39.46ID:slwoR7Dy
>>772
ALLは真偽値を返すのではなく、副問い合わせの結果すべてに当てはまるかどうかの条件構文。
0774NAME IS NULL垢版2019/02/15(金) 20:05:16.74ID:slwoR7Dy
>>772
結果リストがゼロ件の場合は、FALSEでもNULLでもTRUEでもないため、条件そのものがない扱いになる。
0775NAME IS NULL垢版2019/02/15(金) 20:11:56.83ID:slwoR7Dy
正確には結果が返らないため、どの年齢もTRUEになってすべてのレコードが対象になる。
0776NAME IS NULL垢版2019/02/15(金) 20:14:08.31ID:slwoR7Dy
SELECT文の結果の対象レコードが存在しない状態はNULLではない。
0777NAME IS NULL垢版2019/02/15(金) 21:29:59.00ID:???
>>772
ALLはその副問い合わせが空のときはTrueと決まってるから
イマイチ直感的ではないけど、そう決まってるからしょうがない

条件そのものが無い扱いになったりするわけじゃない
ALL条件はTrue/Falseを返す(この場合はTrue なぜならそう決まっているから)
0778772垢版2019/02/18(月) 09:17:02.02ID:Vl1v2yYD
皆さんありがとうございました。よく分かりました!
0779NAME IS NULL垢版2019/02/22(金) 21:56:20.09ID:???
MySQLの使い方に悩んでる。
WebアプリケーションでToDoリスト作るとして
ToDoリストのデータとして5つのテーブルが必要です。
Aさん、Bさん、Cさんがそれぞれ保存し、各自、自分が登録したToDoのみが見れます。
このような場合、SQLサーバでは、Aさん用データベース、Bさん用DB、Cさん用DBを作成する。
という使い方は変ですか?
0780NAME IS NULL垢版2019/02/22(金) 21:58:20.75ID:???
>>779
補足、使用人数は例では3人ですが、100人以上の可能性あり
0781NAME IS NULL垢版2019/02/22(金) 22:38:20.63ID:???
ひとつのテーブルで行ごとにアクセス権を設定できるDBMSもあるにはあるけど
(MySQLでできるかどうかは知らん)
アプリケーション側で制御するのが普通
ユーザーごとにテーブルを分けるのは普通じゃない
0782NAME IS NULL垢版2019/02/22(金) 23:41:46.14ID:???
MySQLでもユーザー毎にdatabaseを割り当ててアクセス権を設定すれば出来ないことはないが
そこまでする必要があるのって、ユーザーにテーブル作成や削除までやらせたいときくらいじゃないか?
0783NAME IS NULL垢版2019/02/23(土) 07:25:16.90ID:???
ありがとうございます。>>779です。
SQLに対してDBを作ったり、テーブルを作ったりするのはToDoアプリ側で、ユーザーはToDoアプリの操作のみです。
アプリの保存データをSQLで管理したいという話なのですが、
こういうときは、データベースごとに分けるのが普通ではないというなら、普通はどんな方法で管理するのでしょうか?
@ 一つのDB内に、Aさんのテーブル5つ。Bさんのテーブル5つ作る 。(テーブルが増えていく)
A 一つのDB内に5つのテーブルがありその中でAさんのレコード、Bさんのレコードを作っていく。(レコードが増えていく)
B 名前をつけて保存で、新しいDBを作りその中に5つのテーブルを作る。(DBが増えていく)
0784NAME IS NULL垢版2019/02/23(土) 07:52:54.75ID:???
人が増減するのに合わせてDBやテーブルを増減するのってその管理がまた
大変だろ…。これ言うとここで鬼門の削除フラグが〜になってしまうけどw
0785NAME IS NULL垢版2019/02/23(土) 08:14:15.37ID:???
昔、IBMが作ったシステムの設計見たらビューで権限のあるレコードだけ表示できるようにしていた。
そんなんでパフォーマンスが出るのかと思ったけど、結構大規模なDWHでもそこそこの速度が出ていた。
もしかしたらIBMのチューニング力のなせる業だったのかもしれないが。
0786NAME IS NULL垢版2019/02/23(土) 08:21:42.86ID:???
>>784 ありがとうございます。ということは、ユーザーの操作により、DBやテーブルの作成はあまりしない方が良いということですね。
アプリ起動時に、DBが無ければ作成したかったんですがそれもやめた方がいいのか?事前に作成しておくのが普通?

>>785 なるほど、ビューを使えば個人毎のテーブルとして扱えるって事ですね。

SQL文は理解したんですが、全体的な使い方がイマイチでして、こういう時に役に立つ書籍が何かあれば教えて下さい…
使い方なんて人それぞれっていうのは分かってるんですが。
0787NAME IS NULL垢版2019/02/23(土) 08:41:19.07ID:???
DBMSのことをSQLとか言う奴の相手するなよ…
0788NAME IS NULL垢版2019/02/23(土) 13:28:01.08ID:???
>>786
>事前に作成しておくのが普通?
普通は動的にテーブル作ったりしない

>アプリ起動時に、DBが無ければ作成
WEBアプリだよな
アプリってクライアント側かサーバ側かどっちのことを言ってるんだよ
普通クライアントが直接DB弄ることなんかないだろ


つか設計スレいけ
0789NAME IS NULL垢版2019/02/23(土) 20:49:34.96ID:bVMedebm
>>786
ひとりずつ分けて管理するというのは紙媒体の考え方だから、素人がそういう設計を思いつくのは理解できる。

ただし、リレーショナルデータベースの世界では、かなりおかしな発想。

操作できるのが自分のデータのみであれば、自分のデータかどうかどうして区別できないと思うのか?

権限という概念がどうしてあるのか、勉強した方がいい。
0790NAME IS NULL垢版2019/02/24(日) 09:44:27.01ID:???
>>688
>>689
ありがとうございます!
もう少し考えて勉強します。
0791NAME IS NULL垢版2019/02/24(日) 15:29:30.62ID:???
>>681
横だけど上の世代はWHERE句に結合を書いてたの?
0792NAME IS NULL垢版2019/02/24(日) 15:40:30.55ID:???
いわゆる結合条件のことだろう。
θ結合は直積から選択するのと等価なんでSQL89まではそういう風に表現してた。
0793NAME IS NULL垢版2019/02/24(日) 16:01:11.52ID:???
Oracleに限って言えばシステム内部で組み込まれてるビューは
今でもWHERE句の結合だけじゃないかと思えるレベル
0794NAME IS NULL垢版2019/02/24(日) 18:37:09.51ID:SaGWUbss
>>791
ちゃんと製品のマニュアルを見たことがあるのか?

SQLの歴史上、結合条件はWHERE句に書き、FROM句には書けなかった。
0795NAME IS NULL垢版2019/02/24(日) 18:58:58.79ID:???
>>794
マニュアルなんてあるんだ
見たことないよ
0797NAME IS NULL垢版2019/02/24(日) 19:00:52.96ID:???
>>794
勉強んなるわ
でもFROMに書けるんだから今はWHERE句に書く必要もうないってことだよね?
0798NAME IS NULL垢版2019/02/24(日) 19:03:50.83ID:???
最初に現場でoracleを習って
そこでは(+)が多用されていた
その後外部結合というのを習ったけど
join句、いまだに使い方慣れなくて困る
0799NAME IS NULL垢版2019/02/24(日) 19:06:24.07ID:???
へぇー
じゃあぶっちゃけ今はJOINから入っちゃった方が無駄がないのかな?
0800NAME IS NULL垢版2019/02/24(日) 20:40:22.59ID:???
初心者はまずJOINだけを覚えた方が良いと思う
0802NAME IS NULL垢版2019/03/10(日) 11:15:16.36ID:Q3ybtzHt
社員テーブルに以下の5カラムがあります。すべてnot nullカラム。
社員id(主キー)、氏名、所属部署、入社年度、生年月日
社員idはランダムで採番されます。

このとき、
所属部署ごとに以下を満たす1人の氏名と生年月日を抽出するとき、
どのようなSQLが考えられますか?
・入社年度が最も過去
・それが複数人居る場合は、その中で社員idが最大の社員

お力添えよろしくお願い致します。
0803NAME IS NULL垢版2019/03/10(日) 11:25:40.65ID:???
FROM 社員テーブル T1
WHERE NOT EXISTS (
SELECT * FROM 社員テーブル T2
WHERE T2.所属部署 = T1.所属部署
AND (
T2.入社年度 < T1.入社年度
OR T2.入社年度 = T1.入社年度 AND T2.id > T1.id
))
0805802垢版2019/03/10(日) 12:06:30.08ID:Q3ybtzHt
803さんのはまだ試してないですが、
group byとhavingで2回絞るのは無理ですかね?
0806NAME IS NULL垢版2019/03/10(日) 13:00:21.03ID:???
>>802
つかってるDBMSかけ

SELECT * FROM(
SELECT
ROW_NUMBER() OVER( PARTITION BY 所属部署 ORDER BY 入社年度,社員id DESC) as 順位,
*
FROM 社員テーブル
) t
where t.順位=1


ウィンドウ関数使えないようなら、サブクエリ3段とかで出来そうだが
0807802垢版2019/03/10(日) 13:27:49.35ID:???
>>806
ありがとうございます、勉強になりました。
SQL serverです。
0808NAME IS NULL垢版2019/03/10(日) 13:47:03.15ID:???
MySQLで

select max(`社員id`),`氏名`,`所属部署`,`入社年度`,`生年月日`
from `社員テーブル`
where (`所属部署`,`入社年度`) in
(select `所属部署`,min(`入社年度`) from `社員テーブル`
group by `所属部署`)
group by `所属部署`;
0810NAME IS NULL垢版2019/03/10(日) 16:08:11.04ID:???
>>806
そういう使いもんならないの教えんのやめ
0811NAME IS NULL垢版2019/03/10(日) 21:01:07.81ID:g5zHpNPp
これから仕事で必要になるためSQL勉強しています。
皆さんはどうやって勉強していますか?

現在SQLBoltってサイトで勉強しています。
覚えが遅いためなかなか覚えられません。
一応ExcelのVBAはできます。
勉強法がわからないのでAccess VBA Standardの資格で勉強した方がいいでしょうか?
0812NAME IS NULL垢版2019/03/10(日) 21:45:35.27ID:???
プログラム言語と違って、何か適当な例題があるわけじゃないし、
割と実践的に体で覚える感じでした
SQLを使用するソフトによって多少、あるいは大きく違ったりするので
SQLをどういう所で使いたいか、ソフトに何を使うかを見極めて学習すると
効果的かも知れません
それから、SQL言語はVBAとは異なるものです
0814NAME IS NULL垢版2019/03/10(日) 21:52:55.29ID:???
>>812
使いものになるまでの所要期間だいたいどれくらい?
0815NAME IS NULL垢版2019/03/10(日) 21:59:42.65ID:???
命がけで取り組めば半年もあればなんとかなります
0816NAME IS NULL垢版2019/03/10(日) 22:06:53.55ID:???
>>815
すみません横から失礼いたします。
業務上必要に迫られ勉強することになりました。
環境は会社で用意されてますが前任者が居なくなってしまう為、ゼロから始めて1ヶ月半でモノにしろと言われています。
命がけで半年ですか…胃が痛くなってきました。
1ヶ月半など無茶苦茶な要求と言えそうですね(泣)
ちなみにエンジニアさんですか?当方非エンジニアです。
0817NAME IS NULL垢版2019/03/10(日) 22:10:58.93ID:???
複雑さの程度にもよりますから
簡単なものでしたら、1か月も掛からずに習得は出来るでしょう
担当する業務の内容次第です
0818NAME IS NULL垢版2019/03/10(日) 22:19:54.37ID:???
>>817
レスありがとうございます。
段階にもよりますね。
予定されているものを見たところサブクエリ5〜7つ、最後で結合するという説明でした。
かなり長くこんなの書けるのだろうかと気が遠のきました。
テーブルの挿入などはなさそうです。
0819NAME IS NULL垢版2019/03/10(日) 23:06:33.52ID:g5zHpNPp
>>812
私はあまり覚えがよいほうじゃないので、業務が始まる前に
勉強して基本的な知識をつける予定でしたが、
やはり実務をこなして体で覚えるほうが早いのですね。
レスありがとうございます。

>>813
レスありがとうございます。
ゲーム会社で簡単なデバック作業をしています。

SQL覚えるのに半年もかかるのですね。
皆様色々教えてくれてありがとうございます。
0820NAME IS NULL垢版2019/03/10(日) 23:10:57.13ID:???
>>819
818です。横から質問奪ってたいへん失礼しました。
ちょうど同じような境遇でしたもので。
思ったよりもSQLを身につけるのは時間がかかりそうで覚悟せねばと思いました。
お互い頑張りましょう。
0821NAME IS NULL垢版2019/03/10(日) 23:31:28.45ID:g5zHpNPp
>>820
いえいえ失礼なんて、とんでもないです。
私もSQLを覚えるのがこんなに時間がかかるとは思いませんでした。
大変だと思いますが、お互い頑張りましょう。
0822NAME IS NULL垢版2019/03/10(日) 23:50:17.33ID:???
>>811
仕事で必要になるならその仕事で使うDBMS使えばいいと思うが
大抵のDBMSは無償版提供してるし
0823NAME IS NULL垢版2019/03/11(月) 00:01:23.59ID:???
このスレの先頭、>>3-10辺りをすらすらと書けるようになれば
大体の業務はこなせるんじゃないかな?w
0824NAME IS NULL垢版2019/03/11(月) 00:03:27.75ID:???
分からなくなったらここで聞いてみると良いですが、
その際に、ソフトに何を使っているかを書いて欲しいです
ソフトによって使えたり使えなかったりするものがあります
0825802垢版2019/03/11(月) 01:04:25.55ID:D8ZFjyx6
Sybase ASEだとOLAP関数サポートなく、
806さんのムリでした

一番エレガントだと思ったのに
0826NAME IS NULL垢版2019/03/11(月) 03:02:21.27ID:???
初心者の質問続きとなっているようですみませんがお願いします
「SQLの基本構文を書くことができる」というとどういった範囲になりますか?
0827802垢版2019/03/11(月) 03:57:23.23ID:wSBvFW/D
>>803
望んだ結果が出ました。
ありがとうございました。

社員テーブルに該当するものが複数テーブルから構成されたサブクエリだとかなり重くなりました。
0828NAME IS NULL垢版2019/03/11(月) 11:49:18.57ID:???
Select文のasに( )を使いたいのですが、どうかけばいいでか?
0829NAME IS NULL垢版2019/03/11(月) 12:26:03.33ID:???
ダブルクォートで括るのが普通だが
角括弧やバッククォートを使うDBMSもある
0830NAME IS NULL垢版2019/03/11(月) 13:16:00.18ID:???
>>828
そういったあんた個人のわがままが通ったとして、
で、ユーザー(つまり結果)に優位性があるのか?
0831NAME IS NULL垢版2019/03/11(月) 13:27:39.34ID:???
>>829
レスありがとうございます。
使ってるのはpostgresqlてすが、" ではダメみたいです。

>>830
As 時間 としていたところ、ユーザーから 時間(分) と表示して欲しいとの要望かありました。
()は特殊な文字てあることは理解していますが、何らかの策があるのではと質問したのですが。あまりに非常識なようでしたら諦めます。
0832NAME IS NULL垢版2019/03/11(月) 14:38:08.55ID:???
postgresなら"でいいはず
なんらかのプログラミング言語を介して使っているなら
そのプログラミング言語に対して"をエスケープしなければならない
0833NAME IS NULL垢版2019/03/11(月) 15:02:14.67ID:???
>>832
すみません、アホなことしてました。
時間"("分")" って…
"時間(分)"でokでした。
0834NAME IS NULL垢版2019/03/12(火) 15:55:28.54ID:wb2Tlo5B
まもなく日本から世界経済が崩壊し、世界教師マYトレーヤとUFOが出てくる。
それからベーシックインカムがはじまるので、20年間ヒキコモリの人でも死にはしない。
むしろ、心配するなら被曝のほう。

【メルトダウンA級戦犯】 『非常用発電機』安倍が放置  『非常用空冷回路』小泉が撤去  死刑求刑
https://rosie.5ch.net/test/read.cgi/liveplus/1552357792/l50
0835NAME IS NULL垢版2019/03/20(水) 08:25:55.58ID:???
ロジックどこまでSQLにするのが正解?
0836NAME IS NULL垢版2019/03/20(水) 08:52:06.23ID:IPQHQif1
>>835
できるだけSQLには詰め込まない。
0837NAME IS NULL垢版2019/03/23(土) 10:38:46.25ID:???
何個までテーブル結合する?
0838NAME IS NULL垢版2019/03/23(土) 10:48:20.01ID:???
>>837
必要なだけ
経験としては10個ぐらいまでやったことある
0839NAME IS NULL垢版2019/04/06(土) 16:59:18.80ID:???
テーブル
No1 No2 No3 No4 No5 No6 No7 No8
data1 A B A A A C B A
data2 A A A A A A B B
data3 C C C A B A A A
data4 A A C C A B A B
data5 A A B A A B B A
data6 A C C A C C A A

ほしい結果
A B C
data1 5 2 1
data2 6 2 0
data3 4 1 3
data4 4 2 2
data5 5 3 0
data6 4 0 4


横方向にA,B,Cの数をカウントしたいですが、SELECT文のみで実施するとしたらどういったクエリになりますか?
oracle12です。
0840NAME IS NULL垢版2019/04/06(土) 18:34:14.74ID:zJrZyIQq
>>839
Excelでやれば?
0841NAME IS NULL垢版2019/04/06(土) 18:34:35.19ID:???
select
No1,
((case No2
when A then 10000
when B then 100
when C then 1
end)
+(case No3 ……)
+……)
from テーブル
0842NAME IS NULL垢版2019/04/06(土) 20:48:36.77ID:???
>>839
スマホだから試してないけど
(セレクトはselectに置換えてくれ)
セレクト
T.data as data,
sum(case T.NO when 'A' then 1 else 0 end) as A,
sum(case T.NO when 'B' then 1 else 0 end) as B,
sum(case T.NO when 'C' then 1 else 0 end) as C
from (
セレクト data, NO1 as NO from table
union all
セレクト data, NO2 as NO from table
(* 中略 *)
union all
セレクト data, NO8 as NO from table
) T
group by T.data
0843NAME IS NULL垢版2019/04/06(土) 22:02:53.39ID:???
>>840
>>841
>>842
レスありがとうございます。

>>841
ちょっと理解できませんでした。

>>842
やはり、UNION ALL使うぐらいしかないんですね。
少し調べて全く同じものまではたどり着けました。
NOが200ぐらいあるのですが、テーブルの設計自体を見直したほうがよさそうですね。
0844NAME IS NULL垢版2019/04/06(土) 23:57:44.63ID:zJrZyIQq
>>843
そもそもその表で管理しようとしているところが天才
0846NAME IS NULL垢版2019/04/07(日) 11:10:36.22ID:???
>>845
ありがとうございます。
ちょっと調べてみます。

>>844
うん。わかってる。
ほんとはこういったテーブルにしたいのだけど、毎日のレコード数が凄いことになっちゃうなーって。
別に集計されたテーブルを作ることを検討します。

data_ No rank
data1 No1 A
data2 No1 A
data3 No1 C
data4 No1 A
.
.
.
data1 No8 A
data2 No8 B
data3 No8 A
data4 No8 B
data5 No8 A
data6 No8 A
0847NAME IS NULL垢版2019/04/07(日) 12:44:56.58ID:???
>>846
> 毎日のレコード数が凄いことになっちゃうなーって。
どんなシステムかわからんけど今時そこら辺のPCでも100万レコード程度は普通に扱えるしOracleでそこそこのサーバー入れてりゃ1億件程度でも破綻しないよ
0848NAME IS NULL垢版2019/04/07(日) 14:24:50.93ID:???
>>847
1次元配列だと200万レコード/日ぐらいが想定されるので、少し厳しいのかなと感じています。
集計前・集計後のどちらもが必要なので、各々のテーブルを作るのが良さそうですかね。
0849NAME IS NULL垢版2019/04/07(日) 14:33:05.24ID:???
項目にsumA、sumB、sumCを追加しておいて
レコード挿入時に集計しておけば良いのではないか?
0851NAME IS NULL垢版2019/04/07(日) 14:49:06.95ID:???
select
No1
,decode(No2,A,1,0)+decode(No3,A,1,0)+…+decode(No8,A,1,0) As Acnt
,decode(No2,B,1,0)+decode(No3,B,1,0)+…+decode(No8,B,1,0) As Bcnt
,decode(No2,C,1,0)+decode(No3,C1,0)+…+decode(No8,C,1,0) As Ccnt
from テーブル
0852NAME IS NULL垢版2019/04/07(日) 19:59:58.82ID:XK0411W4
20年前のPCの感覚で考えているんだろうな。しかも巨大Excel風がお好みらしいから無視が一番。
0853NAME IS NULL垢版2019/04/07(日) 20:08:22.18ID:???
糞メーカー製品のせいでテーブル変えられないって訳でもなく、自分でそういう設計にしてるならしょうがないね
0854NAME IS NULL垢版2019/04/07(日) 20:31:56.17ID:???
decodeとかOracleしか使えないのよりcase when
で記述していったほうがよくね
0855NAME IS NULL垢版2019/04/07(日) 21:47:20.06ID:mpDpVIK/
いじめはどこの町にもあるが島本町は特に酷い
「大阪府三島郡島本町のいじめはいじめられた本人が悪い 」なんて
公言する町は他に無い
0856NAME IS NULL垢版2019/04/07(日) 22:22:31.97ID:???
Oracle 12 なら VARRAY とかでもいいかも
ただ操作する関数は貧弱なのでストアド必須になると思うが
0857NAME IS NULL垢版2019/04/07(日) 23:49:47.59ID:+nydsyOL
>>856
知識がないのになんで無理やり書き込むの?
0858NAME IS NULL垢版2019/04/08(月) 02:31:15.60ID:n+bY9Kjk
Postgres11を使用しています。

3700万行程のテーブルの中途半端な位置に行を追加したいのですが、
通し番号の昇順を維持するにはどうすればよいでしょうか?

こんな構造です。
----------------------------------
主キー | 本文(最大3MB程度)) | 通し番号
----------------------------------

今はこうなっているとします。
--------------------
0001 | あいうえお | 0001
0003 | さしすせそ | 0002
0004 | たちつてと | 0003
--------------------

ここに、1行追加して、以下のように変更したいです。
--------------------
0001 | あいうえお | 0001
0002 | かきくけこ | 0002
0003 | さしすせそ | 0003
0004 | たちつてと | 0004
--------------------
0859NAME IS NULL垢版2019/04/08(月) 03:17:37.68ID:???
>>858
この穴埋め問題はよく話題になるんだけど、やりたいなら最初からそう設計して採番しないとキレイにできないんだよ。後からやるならアプリ側で調整したほうがうまくいく。主キーならとくに。
0860NAME IS NULL垢版2019/04/08(月) 03:24:20.28ID:kcf+7C4K
>>858
UPDATE テーブル
SET 通し番号=通し番号+1
WHERE 通し番号 > 2
とかではなくて?
0861NAME IS NULL垢版2019/04/08(月) 05:05:10.99ID:???
>>858
update テーブル t1
set 通し番号 = (select Rank
from (select 主キー,
Row_Number() over(order by 主キー) as Rank
from テーブル) t2
where t1.主キー = t2.主キー);
0863NAME IS NULL垢版2019/04/08(月) 22:21:43.69ID:???
主キーには空きがある前提なのか?
その例だと通し番号要らんように見えるぞ
0864NAME IS NULL垢版2019/04/16(火) 07:28:34.74ID:???
超初心者の質問で申し訳ないですが

SQLで
顧客情報、順路表から計算して
申請書を作る
医療関係のデータベースは作れますか?
0865NAME IS NULL垢版2019/04/16(火) 07:47:16.31ID:???
>>864
要件が不足しています
計算とは?

2つ表から単に申請書に必要なデータを抜いてくるだけなら当然つくれます
0866NAME IS NULL垢版2019/04/16(火) 12:29:02.43ID:???
>>865
すいません

もう少し詳しく書くと

■顧客情報
A受けている治療内容 (〇〇円)
■順路表
B患者を何回いった(〇〇回)
C前の患者との距離(〇〇km)
■申請書
A、B、Cの数字を元に
四則計算して
それぞれの箇所に数字を入力
して申請書を作成
できるデータベースです
0867NAME IS NULL垢版2019/04/16(火) 12:29:36.88ID:???
>>865
あと
順路表を前月と同じ内容を
翌月にコピーできますか?

※4/1(月曜) Z→E→F
4/2(火曜) L→E→M
なら
5/6(月曜)) Z→E→F
5/7(火曜)L→E→M
0868NAME IS NULL垢版2019/04/16(火) 12:30:58.01ID:???
>>865
現在はEXCELでやっていて
重すぎるので何か手はないか
と考えているところです
0869NAME IS NULL垢版2019/04/16(火) 14:26:35.70ID:???
SQLでできるかというより
これは医療向けアプリじゃないの?
ACCESSで作れますかという話かね
索引とか使えば検索を早くできるからたぶんマシにはなるしデータの複製もできる

発想を跳躍させて
Z、E、Fとか未定義で最短経路問題なのかすら怪しいけど
経路ならグラフデータベースとかある
0870NAME IS NULL垢版2019/04/16(火) 22:05:17.16ID:???
>>869
返信ありがとうございます

Eさんの4月分の申請書を作成するときは
4/1はZ→Eの最短距離
4/2はL→Eの最短距離
で計算します

※Excelでは最短距離だけのシートがあり
Z→Eとすると4/1は最短距離だけのシート
から情報を抜き出しZ→Eの最短距離で計算します

Accessで作れますか?
調べたら
Excelと同じOfficeですし
SQLもあるそうですね
それと
検索機能とかでスピードアップ期待
データの複製はしやすそうですね
0871NAME IS NULL垢版2019/04/18(木) 12:50:12.86ID:???
現状のスタイルを頑なに守るよりも、市販のパッケージに業務形態を合わせたほうが幸せになれると思う。
0872NAME IS NULL垢版2019/04/19(金) 03:51:41.96ID:YxPtsFlc
SELECT key, 名前, 住所, 電話番号
FROM usertable
WHERE (key = (SELECT MAX(key) AS EXPR1 FROM usertable usertable_1))

このSQLは何をしているのでしょうか?
特に、EXPR1が分からないのと、FROM後に、DBには存在しないusertable_1というテーブルが指定されているのが理解出来ません。
0873NAME IS NULL垢版2019/04/19(金) 05:43:22.57ID:???
>>872
EXPR1はMAX(key)の項目名、
usertable_1はusertableの一時的な名前
と名前を付けているだけです

このSQLの場合は特に名前を付ける意味はありません
0874NAME IS NULL垢版2019/04/19(金) 12:05:23.81ID:9Q8CShQD
>>872
無駄なテーブル別名、カラム別名があり、さらに無駄な括弧がある。

こうなった経緯は読み取れない。
0875NAME IS NULL垢版2019/04/19(金) 12:29:57.43ID:???
項目別名はけっこうasつけるひと多いな
テーブル別名にはみんなつけないけど
0876NAME IS NULL垢版2019/04/19(金) 12:30:53.73ID:???
テーブル別名にAsあったっけ?
0877NAME IS NULL垢版2019/04/19(金) 12:40:53.05ID:???
>>871
ならない
他業界しかやってないやつに
現場の気持ちはわからない

どんなソフトよりも
自分のExcelが一番
今後さらに良くするための質問
0878NAME IS NULL垢版2019/04/19(金) 19:23:24.52ID:???
SQL標準では昔から列別名もテーブル別名もASをつけて良いのだが
なぜかOracleでは昔からテーブル別名にASをつけられない
0879NAME IS NULL垢版2019/04/20(土) 00:53:28.87ID:5u+C7Ddr
>>878
それは誤り。Oracle Databaseでは特定のバージョンだけASを使用できないものがあった。
0881NAME IS NULL垢版2019/04/22(月) 16:40:13.06ID:???
ExcelのクエリはASで別名付けても無視するのが残念
0882NAME IS NULL垢版2019/04/22(月) 16:48:58.86ID:HR8wVegr
>>881
ExcelのSQL操作はおまけ機能みたいだからなあ。特定の文字が使えなかったりとタチが悪い。
0883881垢版2019/04/25(木) 16:05:43.06ID:???
すまん。現行バージョンでは反映されてた。
0884NAME IS NULL垢版2019/04/27(土) 16:07:30.36ID:Nn9s9qmX
>>883
現行バージョンとは何?
0888NAME IS NULL垢版2019/04/27(土) 19:08:41.10ID:???
そもそもデータベースが何かを理解してないな
表計算ソフトとは別物
計算や出力が必要ならプログラム書く必要がある
0889NAME IS NULL垢版2019/05/01(水) 12:23:44.69ID:???
ウェブのニュースを集めてとにかくデータベースに放り込み必要なものを取り出すことをしていたのですが
先日からこのようなエラーが出てデータを取り出した結果が取れなくなりました
データが取れることもありますがたまにうまく行くといった感じです

エラー:[MySQL][ODBC 5.3(w) Driver][mysqld-5.7.16]Query execution was interrupted, maximum statement execution time exceeded
コード:80004005
ソース:Microsoft OLE DB Provider for ODBC Drivers

データベースのサイズは2GBくらいあります。設定等々は変えていません
SQLサーバーのエラーログにエラーは見当たらずいろいろやりましたが困っています
解決方法を教えてください
0890889垢版2019/05/01(水) 12:28:19.61ID:d1NFaXkw
クエリを飛ばして30秒ほどでエラーが返ってきます
エラーコードで検索してnet_read_timeoutをいじったり
/*+ MAX_EXECUTION_TIME(1000) */を入れてみたのですが結果は変わりません
データベースの行数は680421です
よろしくお願いします
0892NAME IS NULL垢版2019/05/01(水) 14:19:22.78ID:d1NFaXkw
ありがとうございます。どうすればいいですか
クエリを変えるか、データベースの設定をいじるか調べてみましたがわかりません
0893NAME IS NULL垢版2019/05/01(水) 14:31:16.72ID:???
>>889
>エラー:[MySQL][ODBC 5.3(w) Driver][mysqld-5.7.16]Query execution was interrupted, maximum statement execution time exceeded
>SQLサーバーのエラーログにエラーは見当たらず

なに使ってるかしらんがそのDBMSのスレで聞けや
このスレタイで言ってるSQLはMySQLのことでもSQLサーバーのことでもないぜ
0895NAME IS NULL垢版2019/05/01(水) 17:02:32.49ID:???
>893
sql晒してみれば?
ココ、sqlスレだし
0896NAME IS NULL垢版2019/05/01(水) 18:29:17.59ID:???
ありがとうございます。SQLは以下です。範囲を短くしても長くしても前述のエラーが出ます
SELECT * FROM table1 where input_time BETWEEN '2019-05-01 00:00:00' AND '2019-05-01 00:10:00';
0897NAME IS NULL垢版2019/05/01(水) 21:29:38.34ID:???
データ件数はどの位?
インデックス張ってる?
0899NAME IS NULL垢版2019/05/01(水) 22:50:57.93ID:???
>>897
ありがとうございます!データの件数は68万です。
input_time日インデックス張ってみます
0900NAME IS NULL垢版2019/05/01(水) 23:01:11.18ID:???
60万件もあるとインデックス張らないと辛いな
0902NAME IS NULL垢版2019/05/02(木) 00:02:17.46ID:BaexBhmV
>>899
そのカラムは文字列なのか?
0904NAME IS NULL垢版2019/05/02(木) 01:00:55.56ID:BaexBhmV
>>889 これが元の話だけど、問題の切り分けが全然できてない。

「SQLサーバー」とは何?
0905NAME IS NULL垢版2019/05/02(木) 01:02:07.02ID:???
単純すぎて固有のチューニングの域だな
0907NAME IS NULL垢版2019/05/02(木) 01:18:40.54ID:???
文脈から読み取る限り、違うだろう
0908NAME IS NULL垢版2019/05/02(木) 01:40:31.43ID:???
>エラー:[MySQL][ODBC 5.3(w) Driver][mysqld-5.7.16]Query execution was interrupted, maximum statement execution time exceeded
>コード:80004005
>ソース:Microsoft OLE DB Provider for ODBC Drivers

この通りなんだろう。(Microsoft) SQL ServerではなくMySQL
それを動かしているPCを指してSQLサーバーと言ったんだと思う
0910NAME IS NULL垢版2019/05/02(木) 07:14:45.95ID:???
まあよくわかってない人がデータベースとSQLをごっちゃにしちゃうとかはありがち
>>893がちゃんとログをコピペしてる所はほめていいと思う
0911NAME IS NULL垢版2019/05/02(木) 14:21:28.68ID:???
昨日はありがとうございました。>>908はその通りです
インデックスを張ると今度は要求された名前、または序数に対応する項目がコレクションに見つかりません
のエラーが出るようになったのでインデックスをちゃんと張る所からやってみようと思います
ひとまずありがとうございました
0912NAME IS NULL垢版2019/05/07(火) 09:43:18.75ID:???
>>888
Excelからデータベースに対してSQL文を投げて、結果をワークシートに取り込むまでの機能の話だろ。
かなり初期からある機能だぞ。
0915NAME IS NULL垢版2019/05/09(木) 00:47:12.61ID:nm/UmqA+
UPDATE のときのテーブル名に正規表現またはワイルドカードを使う方法を教えてください。
例えば、table_a_001〜table_a_100が合った場合に、「table_a」が含まれるテーブルだけ一括でupdateしたいです。

イメージ的にはこんな感じに
UPDATE `table_a_*` SET `type`='hoge'

宜しくおねがいします。
0917NAME IS NULL垢版2019/05/09(木) 12:31:24.79ID:???
>>915
> 例えば、table_a_001〜table_a_100が合った場合
その時点でおかしいから設計を見直せ
どうしてもしょうがない場合はテキトーなスクリプト言語でSQLを生成して流せ
0918NAME IS NULL垢版2019/05/10(金) 01:11:58.08ID:???
金と技術力がないと運用にツケがまわるよくある悪例だね
0919NAME IS NULL垢版2019/05/10(金) 01:22:33.62ID:???
テーブル名の001〜100に意味があるなら、その値を項目に追加して
全部を一つのテーブルにまとめてしまえばどうかな?
0920NAME IS NULL垢版2019/05/10(金) 02:07:24.57ID:6hPhptIK
001〜100は例えで書いたんですけど、実際は日付なんです(_20190510)みたいな
その日付ごとにけっこう大きなデータがあるので日付で分けてるんですが、SQL文だけでtable_aのみを絞るのはやっぱり無理なんでしょうか?
おっしゃるとおりで設計が間違ってるんでしょうけど
0921NAME IS NULL垢版2019/05/10(金) 03:38:04.08ID:???
日付をテーブル名にするようなデータベースで
その後に更新が必要になるって何かが変だと思う
0922NAME IS NULL垢版2019/05/10(金) 06:59:51.73ID:???
>>920
ストアドプロシージャで動的sqlでも使わない限り無理です
0923NAME IS NULL垢版2019/05/10(金) 08:16:54.30ID:???
性能的な問題でやっているんならパーティショニングが使えないか検討するところだね。
0925NAME IS NULL垢版2019/05/10(金) 11:37:38.49ID:???
量が多いからテーブルを分けるというのが、わからんな。
処理速度の問題だとしたら、インデックス付けてないとかw
0926NAME IS NULL垢版2019/05/10(金) 23:42:57.25ID:kyiAxM67
>>920
ひとつのUPDATE文で済ませたいという点からして、トランザクションの概念がないのがわかる。
0927NAME IS NULL垢版2019/05/10(金) 23:47:34.60ID:kyiAxM67
>>920
データ量が多いという認識がそのものが間違っている。

本当にデータ量が多いシステムを担当しているのなら、こんなところで質問してこない。
0928NAME IS NULL垢版2019/05/11(土) 11:49:51.10ID:???
質問者をあれこれ詮索するの、感じ悪い
提案までにしとこうよ
0929NAME IS NULL垢版2019/05/11(土) 12:26:05.61ID:???
自分からはなんの提案もなく優等生ぶるのも同類な
0930NAME IS NULL垢版2019/05/12(日) 01:08:28.68ID:DtTEN3xu
このスレッドそのものが、ずっと初心者スレになっているから仕方ない。

シェルスクリプトのスレッドでも一発コマンドでできないかと、しつこく質問してるやつがいる。

プログラマがプログラムを作っているのに、なぜかひとつの文に収めないといけない思想信条があるようだ。

こういうのは無視するしかない。
0931NAME IS NULL垢版2019/05/12(日) 20:39:12.43ID:???
ワンライナーは個人の趣味であって必ずしもソレに付き合わされる必要はないな
0932NAME IS NULL垢版2019/05/16(木) 06:37:31.47ID:R+LnK41M
PHP&MySQLの環境です。

ユーザーID
ポイント
を項目にしたテーブルがあるとします。
ユーザー間で破綻なく自由に任意のポイントを送受信するにはどのようなコードを作成すればよろしいでしょうか?

また、DBサーバが複数ある場合で、同様にDBサーバ越しでも同様のことをしようとするとどのようなコードになりますでしょうか?

秒間数千、数万の処理を行いたいです。
ご教授お願いいたします。
0933NAME IS NULL垢版2019/05/16(木) 06:46:54.10ID:???
なぜこの程度の知識しかない奴がこんな作業をさせられるのだろうか
0934NAME IS NULL垢版2019/05/16(木) 08:00:38.37ID:???
PHPしか書けないような聞き方っぽいのに
XAトランザクションで秒間数万ね
人をすり潰していたITバブル期みたいなブラックだね

http://q.hatena.ne.jp/1217036141
0935NAME IS NULL垢版2019/05/16(木) 09:48:29.80ID:???
超初心者ですすいません
likeとisと=の使い分けが分かりません
inの前はlike、nullの前はis、データ型が数字だと=であってますか?
0936NAME IS NULL垢版2019/05/16(木) 10:01:34.38ID:???
なんか1つもあってないような気がするな

"is null" と "is not null"は単語じゃなく文でワンセット
文字の比較でも =
in の前は like ... え?
0937NAME IS NULL垢版2019/05/16(木) 10:19:46.11ID:???
すいませんありがとうございます
比較の時に、=を使ったりlikeを使ったりが、使い分けがわからないのです
isが出てくるのは、isnullとisnotnullだけですか?
0939NAME IS NULL垢版2019/05/16(木) 10:52:01.67ID:???
超初心者なら、慣用句みたいに暗記した方が良いかもよ
0940NAME IS NULL垢版2019/05/16(木) 12:12:40.30ID:???
like……文字列の部分一致検索につかう
=……完全一致検索
is……null比較の構文の一部

nullの扱いはシステムによりけりなのでシステムごとに調べること
0941NAME IS NULL垢版2019/05/16(木) 13:50:42.07ID:???
なるほど、ありがとうございます
ここの方々はエンジニアですか?
自分はマーケティングの担当で自分で使えた方が便利ということで覚えようとしてます
セレクト文しか使わないのですが、色々な条件で、いつ誰が何を買ったとか抽出したく、サブクエリがうまく使えるようになるのが目標です
またアドバイスいただいてもいいですか
0942NAME IS NULL垢版2019/05/16(木) 17:34:30.51ID:???
SQLの書き方なら、ここで聞いて良いですよ

そういう質問を、みんな待ってますから
0943NAME IS NULL垢版2019/05/16(木) 20:13:56.53ID:???
SQL書かなくてもデータ分析できるツールあるからそれ使う方が良いんじゃない
0944NAME IS NULL垢版2019/05/16(木) 20:50:40.01ID:i55lMdWZ
ここにかぎらず不思議なのは5chのスレッドは探せるのに、SQLを解説しているWebサイトや、そのへんに転がっている書籍は視界に入らない人間がいるところ。
0945NAME IS NULL垢版2019/05/17(金) 07:28:38.58ID:???
>>944
> SQLを解説しているWebサイトや、そのへんに転がっている書籍
そう言うのは能動的に探さないと駄目だから
エスパー機能付きのWebサイトとか書籍があればいいんだけどw
0946NAME IS NULL垢版2019/05/17(金) 08:49:53.26ID:nkjAvs1S
BIツールは入ってますがSQL使うこともあります
いつもはデータ抽出を社内SEの人に頼んでますが、簡単なものは自分で出せた方が仕事のスピードが上がるので覚えようと思っています
本やサイトも使っていますが、どうしても途中で分からないところが出てしまって、よければ御指南ください

練習問題をやっていて、以下のような内部結合を書いたのですがデータが返ってきません
PublisherテーブルにIDとNameがあって、IDがBookテーブルのPublisher_IDとつながっています
山田さんが書いた本についてすべての情報を抜き出したいです
SELECT *
FROM Book
inner join Publisher on Book.Publisher_ID=Publisher.ID
WHERE Publisher.Name='山田';
0947NAME IS NULL垢版2019/05/17(金) 15:00:48.66ID:???
Publisher.Name って名字しか入ってないの?
0948NAME IS NULL垢版2019/05/17(金) 17:22:15.76ID:???
>>946
Publisherには'山田'ってデータがないんじゃない?
よけいなことだろうけど、
Publisherって言うと出版社のことだと思う
著者ならAuthorにしたいところ
0949NAME IS NULL垢版2019/05/17(金) 19:02:58.57ID:???
>>946
連結する場合select でアスタリスク使わない方がいい
連結側に同じフィールド名があるとエラーになるのでasで別名にしないといけない
0950NAME IS NULL垢版2019/05/17(金) 19:41:17.83ID:???
>>946
SQLは問題ないみたいだから
Publisher.Nameに山田があるか確認するために
まずそのSQLのWHERE句をはずしてどういうデータがあるかを見たほうがよいのでは?
0951NAME IS NULL垢版2019/05/17(金) 20:49:08.09ID:???
>>946
テーブル定義 (CREATE TABLE文) を見たいな
0952NAME IS NULL垢版2019/05/19(日) 15:25:35.49ID:H3ZBKVvV
946です、みなさんありがとうございます
SQLはあってるんですね、よかったです

模範解答は>>949さんが書いてくださってるように、asでテーブルすべてに別名をつけています
テーブル名を指定するときは、別の名前を付けた方がいいんですね
これからやってみます
 
またよろしくお願いします
0953NAME IS NULL垢版2019/05/21(火) 10:14:27.63ID:???
microsoft sql server 2008

テーブル同士を結合するとき、char型の項目とvarchar型の項目とで
結合するときはconvertで型を合わせる必要があるでしょうか?

この項目はマスタテーブルの主キーなのですが、
伝票テーブルに外部キーとしても存在します。
伝票側の項目には必ずしも値が入るとは限らず、空白も存在します。
そのためマスタテーブル側をchar型に、伝票テーブル側をvarchar型にし、
それぞれで外部結合します。
0955NAME IS NULL垢版2019/05/21(火) 23:46:08.20ID:???
そもそもなぜ型を合わせないのか
値がないなら、空白じゃなくてNULL入れろよ

まあ世の中にはNULLと空白を区別できない欠陥DBもあるけどなw
0956NAME IS NULL垢版2019/05/22(水) 01:00:05.54ID:???
主キーにする項目に、値が入らないとか、調布市議
0958NAME IS NULL垢版2019/05/22(水) 06:11:10.78ID:???
NULLと空白を区別できない欠陥DBなんかあるかな
長さゼロの文字列とNULLを区別できない欠陥DBなら知ってるけど
0959NAME IS NULL垢版2019/05/22(水) 06:20:15.84ID:???
空白と空文字列を区別できない欠陥PGなのでは?
0960NAME IS NULL垢版2019/05/22(水) 09:43:26.07ID:???
NULL不許可にしてるんでしょ
NULL撲滅委員会とかあるし
0961NAME IS NULL垢版2019/05/22(水) 17:19:04.11ID:3DWUiXWo
>>958
長さがゼロの文字列だったら、それはNULL値。これが本来のデータベースの定義。
0962NAME IS NULL垢版2019/05/22(水) 18:12:49.17ID:???
長さ0の文字列と=で比較しても良いのかな?
0963NAME IS NULL垢版2019/05/22(水) 19:07:48.33ID:???
長さゼロの文字列とNULLを区別しないのは
Oracle Databaseの有名な欠陥であり
それはOracle社自身も認識していてマニュアルにも書いてある

https://docs.oracle.com/cd/E96517_01/sqlrf/Nulls.html
> Oracle Databaseは現在、長さが0(ゼロ)の文字値を
> NULLとして処理します。ただし、将来のリリースでは
> この処理が変更される場合があるため、空の文字列を
> nullと同じように処理しないことをお薦めします。
0965NAME IS NULL垢版2019/05/22(水) 20:47:13.37ID:???
>>963
> ただし、将来のリリースでは
> この処理が変更される場合があるため
まあ、どう見ても無理だろw
0966NAME IS NULL垢版2019/05/22(水) 21:09:06.79ID:???
かなり昔からそういってるからなぁ
そのうちVarchar3型つくるんじゃって話もある
0967NAME IS NULL垢版2019/05/22(水) 21:20:32.64ID:???
Oracleを選ぶメリットがなにもない
0968NAME IS NULL垢版2019/05/22(水) 21:36:21.32ID:???
欠陥であることは分かってるんだけれども
直しちゃうと既存のアプリケーションに甚大な影響が出るんで
直すに直せないんですよー
という気持ちがありありと分かるマニュアルだねえ
0969NAME IS NULL垢版2019/05/22(水) 23:55:25.37ID:???
つーか null と空文字列を同一視するというのは極めて常識的な挙動であって
標準SQLの方が時代遅れと言えるのでは

ここはもう標準を変更してnullも空文字列も、ついでに空白だけのカラムもすべて同一視するようにすべき
null は is で比較するとかいう無意味な制限も廃止して全て = の比較に統一すべき

とするのはどう?
0970NAME IS NULL垢版2019/05/23(木) 00:07:35.60ID:???
こんなところでそんなアホ丸出しの提案して
何かが変わると本気で思っているのか
0972NAME IS NULL垢版2019/05/23(木) 00:45:42.35ID:b4XWIHfq
空文字列とNULLが混在して混乱を招いているシステムは多い。
0973NAME IS NULL垢版2019/05/23(木) 00:54:30.57ID:???
空の文字列とNullを同一視するのが常識とかないと思うんだが
データベースしか触らんやつはそういう常識なの?
0974NAME IS NULL垢版2019/05/23(木) 01:02:33.57ID:???
Oracle社員?が荒らしてるだけ
0975NAME IS NULL垢版2019/05/23(木) 01:05:22.79ID:???
ホントOracleはシステム開発者にとってマイナスなことしかしないよね
0976NAME IS NULL垢版2019/05/23(木) 01:20:10.41ID:???
特定のDBしか触らない奴だとそれが常識だと考えるかも
その場合は、そいつには触らない方が良いと思う
0977NAME IS NULL垢版2019/05/23(木) 01:26:06.81ID:???
ぬるい質問ばかりで暴れたくなった
相手はどのDBでもよかった
0978NAME IS NULL垢版2019/05/23(木) 02:16:05.50ID:???
>>973
例えばC言語で空文字列とnullが同じと言ったらそりゃ変なんだが
抽象度が高いSQLで区別する意味は全くないと思うんだよね
むしろ区別することが当然と考えること自体が何か洗脳されてるという気がするわけ
まあ釣りではあるのだが
0979NAME IS NULL垢版2019/05/23(木) 02:52:16.93ID:TvO7l/JJ
全項目NOT NULLにして集計処理の手間を減らすことはあるな
CSV/TSVを外部テーブルで使うとNULLが使えないことがほとんどよね

外部結合して片側NULLで引っ掛けるのはよく使うから
NULLの概念自体はあってほしいけど
0980NAME IS NULL垢版2019/05/23(木) 08:31:33.80ID:???
nullと空文字列が区別できなくて良いってやつは、nullが値ではないって概念が理解出来ないんだろうな
0982NAME IS NULL垢版2019/05/23(木) 10:57:17.75ID:???
>>980
その概念に実用性はあるのか?
それで何か便利なことがあった?
むしろ不便であって弊害しかないオナニー概念だと思うのだが

いや >>970 の言う通り、ここで言っても仕方ないことは分かってるけどね
たまには王様は裸だと言って見たくなる
0983NAME IS NULL垢版2019/05/23(木) 12:25:42.68ID:???
あえて釣られてやるけど、例えば未入力と空文字の入力を区別したいとか普通にあるだろ
0984NAME IS NULL垢版2019/05/23(木) 12:41:39.82ID:???
>>983
あるか? そんなの
空文字の入力は未入力でいいんでわ
0985NAME IS NULL垢版2019/05/23(木) 12:42:22.93ID:???
未入力よりも未設定ってことでは
0986NAME IS NULL垢版2019/05/23(木) 13:19:01.66ID:???
>>985
空文字の入力を未設定と区別する必要があるのかね
それを区別しようとすることでシステムは複雑になり間違いも多くなる
0987NAME IS NULL垢版2019/05/23(木) 13:58:31.76ID:???
セルの値としてはどうかわからないが,テーブル結合後の名テ―ブルの行の属性値としては有りだと思う
0988NAME IS NULL垢版2019/05/23(木) 14:19:42.47ID:???
>>987
そうかねぇ
むしろ使い分けする運用こそ危うい気がするのだが
0989NAME IS NULL垢版2019/05/23(木) 18:02:19.51ID:???
整数値カラムでouter joinしたとき
存在しない行の整数値カラムの値は
何になるのでしょうか?
0990NAME IS NULL垢版2019/05/23(木) 20:00:04.84ID:RM6eL1FJ
>>988
バカが使えばどんな道具も危ないからな
0994NAME IS NULL垢版2019/05/23(木) 23:30:17.28ID:???
どうしてオラクルは、ああいう苦しいコメント出しているの?
0995NAME IS NULL垢版2019/05/24(金) 07:31:48.91ID:???
「sqlなら曖昧でよくね?」っていうけど
連携するプログラム側が困るんよね。それじゃぁ

運用担当がデータ見るだけに使うなら
テキトーでも許されるのかもしれんけど
0996NAME IS NULL垢版2019/05/24(金) 13:54:52.91ID:???
NULLとかnilとかNoneについては、「値ではない」という説明の仕方より、「あくまでも値だけど、約束事として、(概念的に)値なしと呼びうる状況(の一部)に対応する値として利用できる特殊な値」という説明の仕方の方が誤解を招きにくいんじゃないか。
たとえば、空の配列の長さが0、Noneが1個入った配列の長さが1という言語で「Noneは値ではない」という説明はしづらい気がする。

結局、(概念的に)値なしと呼びうる状況のうち、どれにNULL/nil/Noneを対応させて、どれに空文字列・空配列を対応させるか(undefinedがある言語についてはそれも)というマッピングを整理しておくべきという話かなと思うが。
0998NAME IS NULL垢版2019/05/24(金) 18:24:26.05ID:???
頭ぱっぱらぱーのウチの運用が言いそう
10011001垢版Over 1000Thread
このスレッドは1000を超えました。
新しいスレッドを立ててください。
life time: 504日 21時間 44分 19秒
10021002垢版Over 1000Thread
5ちゃんねるの運営はプレミアム会員の皆さまに支えられています。
運営にご協力お願いいたします。


───────────────────
《プレミアム会員の主な特典》
★ 5ちゃんねる専用ブラウザからの広告除去
★ 5ちゃんねるの過去ログを取得
★ 書き込み規制の緩和
───────────────────

会員登録には個人情報は一切必要ありません。
月300円から匿名でご購入いただけます。

▼ プレミアム会員登録はこちら ▼
https://premium.5ch.net/

▼ 浪人ログインはこちら ▼
https://login.5ch.net/login.php
レス数が1000を超えています。これ以上書き込みはできません。

ニューススポーツなんでも実況