X



SQLなら俺に訊け [無断転載禁止]©2ch.net
0001デフォルトの名無しさん
垢版 |
2017/07/14(金) 07:40:53.63ID:HFjsarQi
さあ
0186デフォルトの名無しさん
垢版 |
2022/06/29(水) 21:18:34.19ID:zCehF1Jn
マシンのメモリなどの、何かのリソースが少ないのかも

例えばメモリが少ないと、1クリックしてから処理されるまで、1分掛かる。
遅すぎて何もできない
0187デフォルトの名無しさん
垢版 |
2022/06/30(木) 16:46:00.43ID:4XQ6AH+7
バラバラな日付が入っているテーブルから、
特定日以前3日間のレコードを取るSQL教えてください

hogeテーブル
id,date
5,2022-06-30
4,2022-06-19
3,2021-12-24
2,2021-06-03
1,2021-01-02

ここから2022-06-19以前の3日間のレコード
2022-06-19
2021-12-24
2021-06-03
を取りたいです
0188デフォルトの名無しさん
垢版 |
2022/06/30(木) 17:49:50.05ID:1+oYjPxt
その日付より小さくて、その日付ー3日より大きいっていうwhere条件書くだけだと思うが

日付の扱いはDBMSによって差が大きいからこれ以上はちゃんと環境書け
0189デフォルトの名無しさん
垢版 |
2022/06/30(木) 17:56:20.31ID:eK6suSY8
>>187
where date <= ‘2022-06-19’
order by date desc
limit 3;

上から3行取る方法はDBMSによって違うのでマニュアルを読んで
0190デフォルトの名無しさん
垢版 |
2022/06/30(木) 18:54:13.55ID:6sehYChL
>>189
ソートしろとは言ってないぞ
0192デフォルトの名無しさん
垢版 |
2022/06/30(木) 20:18:37.20ID:1+oYjPxt
ああ、三日じゃなくて3件分のデータが欲しいのか
日付にダブりがないなら>>189さんの方法で
ダブりがあるならdistinctなりgroup byなりしてからだな

>>190
ソートしないでできるならぜひその方法を教えてくれ
0193デフォルトの名無しさん
垢版 |
2022/06/30(木) 20:29:12.21ID:6sehYChL
>>192
ソートする必要がどこにあるのか?
0194デフォルトの名無しさん
垢版 |
2022/06/30(木) 20:31:30.23ID:6sehYChL
3日が3レコードという意味なのかどうかからわからない。
0196デフォルトの名無しさん
垢版 |
2022/06/30(木) 22:57:01.80ID:1+oYjPxt
>>195
なるほど。件数がゼロ件になるやつの考慮がいるけど、いけるのはいけそうだな
SELECT * FROM hoge T WHERE
 (SELECT count(*) FROM hoge
  WHERE hoge.[date] >t.date AND hoge.[date]<='2022-06-19'
 ) < 3 AND t.[date]<='2022-06-19'
こんな感じか
これならオフセット取れないとかwindow関数使えないDBとかでも動くな
0197デフォルトの名無しさん
垢版 |
2022/06/30(木) 23:12:15.50ID:y+cu0wpZ
>>190
ソートしろと言われているのにソートしないのは問題だが逆に
ソートしろと言われてないのにソートするのは構わんだろ
0198デフォルトの名無しさん
垢版 |
2022/07/01(金) 00:36:44.48ID:oYJ8x66X
>>197
無駄なソートはRDBMSによっては致命的な性能問題を引き起こす。
0199デフォルトの名無しさん
垢版 |
2022/07/01(金) 03:40:55.11ID:42pyAc9U
>>198
「無駄な」ソートはな
order by 書けば絶対ソートするとでも思ってるんだろうか
つかおまえソートしない方法提示できてないだろ

テーブルスキャン何回もやるぐらいならソート1回のほうがましなことも多いぞ
まあなんにせよインデックス構成とオプティマイザ次第だけどな
0200デフォルトの名無しさん
垢版 |
2022/07/01(金) 09:55:27.56ID:g3tdjjPX
TOP/LIMIT/FETCH FIRST + ORDER BY使ったtop-Nクエリが
相関サブクエリ使ったtop-Nクエリより遅くなるようなメジャーなDBMSがあるの?
0201デフォルトの名無しさん
垢版 |
2022/07/02(土) 00:59:29.77ID:1zpQKBp2
構文の話をし始めるやつはヤバい
0203デフォルトの名無しさん
垢版 |
2022/07/02(土) 19:31:42.58ID:1zpQKBp2
内部の処理の説明をSQLの構文で説明するのは、知識がなさすぎると思うぞ。

少なくとも業務システムでは嫌われる。
0204デフォルトの名無しさん
垢版 |
2022/07/02(土) 20:23:17.28ID:MgQFVCuv
構文の話してるヤバい奴ってどれ?

というか、こういうどこに向かって話してるのかわからないようなのもなんかヤバい。
0206デフォルトの名無しさん
垢版 |
2022/07/03(日) 12:56:59.34ID:UY7Pdi/e
つかDB板の連中って何でそれが重い処理なのかまるで理解してないよね
しかも呼び出し側含めた全体最適化なんてする気もないようだし、
あいつらはSQLを手打ちでもしてるのだろうか?
0208デフォルトの名無しさん
垢版 |
2022/07/03(日) 22:24:10.66ID:UY7Pdi/e
インデックスを張ってる状態での189は間違いなく軽い
DB屋はDBで済ませる傾向があるとは聞くし、
クエリプランナで最高に最適化されてリングバッファ的に動くのなら196も確かに軽いが、
そうならない場合は糞重い

俺はそこまでDBのことは知らないので、
189が第一選択肢で、速度の問題があればインデックスを張る
これで問題がある場合は、自前でカーソルをとってリングバッファを実装する

DB屋なら196がそれぞれのDBで軽いか重いか把握した状態で使うのだとは思う
ただそれは俺らプログラマとはだいぶ視点が違うと感じた
0209デフォルトの名無しさん
垢版 |
2022/07/03(日) 23:34:25.47ID:fr0a/itN
ソートの話は相関サブクエリを使えという話じゃなく
指定日以前の任意の3レコードなのか(ソート無し)
指定日以前の直近の3レコードなのか(ソート有り)
という違いを指摘したかったんでしょ
0210デフォルトの名無しさん
垢版 |
2022/07/04(月) 01:22:49.55ID:7pHsiooe
それもあるとは思ったが、187だとほぼid通りの順なのだろうし、
191で文句も言ってないので、おそらくログ的な物のラスト3行を取りたいのだろうよ

なら俺は208で言ったとおりにする
(なお俺は189ではない)
それを(実際どうなるのかは知らんが)糞遅くなりそうなSQLを出すのもいかがなものかと

質問者が悪いと言えばそうだが、
質問者のレベル推定も含めての回答にしないと、ここでは成り立たない

「ソートして良い」と勝手に決めるのが問題なら、
「ソートしてはいけない」と勝手に決めるのもまた問題でしかない
なら聞けばいいのに、それもしない
(なお、しても意味は通じず、余計に面倒になるのは見えているので、
今回のようにいきなり189で問題ないとも思うが)
なんというか、この辺の空回り具合は、文化の違いを俺は感じたよ

ただまあ俺らが特殊なのかもしれないけどな
この板では基本的にエスパー出来ないと回答は無理だし
0211デフォルトの名無しさん
垢版 |
2022/07/12(火) 22:08:19.53ID:PV1bWVal
SQLで4桁文字列'hhmm'とDatetime型を結合する方法って分かる?

例:
’1234’  char型
’2022/07/12 00:00:000’ datetime型 があったときに、
  ↓
2022/07/12 12:34:000  datetime型 みたいに結合したいんだけど。。
0212デフォルトの名無しさん
垢版 |
2022/07/12(火) 23:46:03.19ID:xDQ7ywi9
とりあえず'1234'を12と34の数字にして、元の日付に12時間と34分を足せばいいんじゃねふ

日付まわりはDBMSによって違うから
日付時刻をサポートしてるDBMSなら指定の時間、分を足す関数かなんかがあるだろうからそれ調べて使え
0214デフォルトの名無しさん
垢版 |
2022/07/13(水) 16:51:17.49ID:mLEjbAz1
変数設定が抜けておりました
0215デフォルトの名無しさん
垢版 |
2022/07/13(水) 20:55:05.36ID:d4+uION0
>>211
関数
0216デフォルトの名無しさん
垢版 |
2022/07/15(金) 12:26:52.71ID:GqllWW3Z
>>211
普段、日時の計算をどうやっているのか、むしろ疑問ですね。

古い本でいいから古本を買えよ!
0218デフォルトの名無しさん
垢版 |
2022/07/25(月) 22:10:59.17ID:bIl9FMxT
SQLで急にファイル出力とか言われても何のこっちゃ分からんわ
シェルスクリプトで普通にappendでもしろや
0219デフォルトの名無しさん
垢版 |
2022/07/28(木) 20:47:41.93ID:oYIQQ6EM
ネタに反応すんな
0220デフォルトの名無しさん
垢版 |
2022/11/10(木) 10:38:00.26ID:5Ugvs3e+
explain analyzeを付けると1秒、付けないと30秒かかるクエリがあるのですが一般的には何が原因なのでしょうか
0221デフォルトの名無しさん
垢版 |
2022/11/10(木) 12:15:12.96ID:8Ccihq77
>>220
両方同じようにクエリが実行されてるのなら
結果セットの転送コストがめちゃくちゃ大きいんじゃないの?
0222デフォルトの名無しさん
垢版 |
2022/11/17(木) 10:16:58.88ID:gy0rtS5S
SQL Server 2022 正式リリース(米国11/16日)
MSDNダウンロードサイトでDeveloper EditionのISOリリースを確認
0223デフォルトの名無しさん
垢版 |
2023/02/12(日) 18:13:43.26ID:fJXtAG7P
phpMyAdmin使ってます。
型が合わないデータの入力があったとき、
拒否するか、無理やりデフォルトの値を登録するか。
それを設定するコンパネとかありますか?
0224デフォルトの名無しさん
垢版 |
2023/08/25(金) 10:09:06.20ID:AK+z9ndV
ストアドプロシージャって初心者用解説サイトとかで戻り値のない関数って言われてるけど普通にRETURNできるやん
歴史的な背景でもあるんか
それとも解説者か俺があほなんか
0225デフォルトの名無しさん
垢版 |
2023/08/25(金) 14:00:50.18ID:5+gJach+
論理演算が弱すぎる
0227デフォルトの名無しさん
垢版 |
2023/08/30(水) 22:18:57.94ID:+4EyrP3p
>>4
全列nullでも?
0228デフォルトの名無しさん
垢版 |
2023/08/31(木) 14:07:47.09ID:nrSGXsFq
>>224
それはファンクション(関数)とストアドプロシージャの違いがあまりないDBMSの場合
0229デフォルトの名無しさん
垢版 |
2023/08/31(木) 14:16:19.77ID:nrSGXsFq
ファンクションは戻り値があるプロシージャという意味
0231デフォルトの名無しさん
垢版 |
2023/08/31(木) 15:20:59.08ID:nrSGXsFq
元はユーザー定義関数
0232デフォルトの名無しさん
垢版 |
2023/08/31(木) 15:26:10.21ID:nrSGXsFq
VBもAda言語もそうだけど、ファンクションプロシージャとサブプロシージャをわけているのは、プログラミング言語ではめずらしくない。

C言語、C言語に影響を受けた言語だと、わざわざ戻り値なしをvoidと書いて明確にする。

ファンクションは戻り値を利用するもの。戻り値を呼び出し側が無視できる仕様かどうかの問題。
0233デフォルトの名無しさん
垢版 |
2023/08/31(木) 16:29:25.54ID:JttiXEFt
SQL標準的にはプロシージャに戻り値があるかどうかはimplementation defined
戻り値があったほうが便利なので多くのDBMSベンダーはscalar valueとresult setのどちらも返せるようにしてる
一方(ストアド)ファンクションはSQL標準で戻り値が必須でscalar valueのみと定められている

プログラミング言語でファンクションとプロシージャを区別してたのは太古の昔の話
今ではもうそんな区別に価値はなくなってる
SQL標準で区別されてるのは利用方法や利用する場所が基本的に違うため
0234デフォルトの名無しさん
垢版 |
2023/08/31(木) 16:31:16.87ID:nbJL0Jax
MySQL系はファンクションだと、COMMITなどのトランザクション制御ができないので、あまり考えずにファンクションで統一などしてはならない。
0235デフォルトの名無しさん
垢版 |
2023/08/31(木) 16:41:03.73ID:nbJL0Jax
>>233
前半と後半で違う説明をしているね。

ファンクションは「関数」だ。

OUTパラメータを参照するのは「手続き」という処理だ。

プロシージャで戻り値とOUTパラメータを返す場合は、ちゃんと仕様書がないとわけのわからないものになる。
0237デフォルトの名無しさん
垢版 |
2023/08/31(木) 23:06:43.05ID:smxtGdye
そもそも、DBMSの指定や前提もなく
>ストアドプロシージャって初心者用解説サイトとかで戻り値のない関数
とか書いてあるなら、そのサイトに問題があるだけの話

まあ、ちゃんと前提を読んでないか理解してない読み手の問題の可能性もあるが
0238デフォルトの名無しさん
垢版 |
2023/09/01(金) 20:37:48.72ID:5C0TsKNS
関数やプロシージャのことを「メソッド」と書いている書籍もあるくらいだからな。勝手な名前をつけるやつはたくさんいる。
0239デフォルトの名無しさん
垢版 |
2023/09/01(金) 23:32:50.20ID:OZcoXz6r
ざっくり言うと
ファンクションは1つのSQL文の中でSELECT句やWHERE句などの一部として繰り返し利用する機能を定義したもの
プロシージャはSQL文を使ったひとまとめの処理をSQL文の一部としてではなく外部から繰り返し呼び出せるように定義したもの
これが最も根本的な違い

ファンクションでトランザクション制御しようと考えてしまったりデータベースを更新しようと考えてしまう人はこの根本的違いを理解してない
0240デフォルトの名無しさん
垢版 |
2023/09/02(土) 22:12:45.21ID:9Zs5bzSj
そもそもプロシージャは手続きという処理という意味で、ファンクション(関数)は機能という結果を返す処理の意味。
0242デフォルトの名無しさん
垢版 |
2023/09/16(土) 22:45:43.61ID:S29731mD
数学がわからないんだろ
0243デフォルトの名無しさん
垢版 |
2023/09/16(土) 22:48:52.44ID:S29731mD
ファンクションプロシージャは結果を戻り値で返す

サブプロシージャはOUTパラメータ(引数)で返す

SQLの関数は関数(ファンクションプロシージャ)で実装しないとSQLの構文が破綻する
0244デフォルトの名無しさん
垢版 |
2023/09/16(土) 22:55:55.12ID:S29731mD
>>241
だから、オラクル社はAda言語をそのまま流用しただけだよ。

ANSIはファンクションの方を先に標準SQLに組み込んだだけ。

ファンクションとサブを区別しているかどうかは、Ada言語を踏襲しているかどうかの違い。

C言語のように戻り値を無視する構文がいいのか悪いのかという話だよ。
0245デフォルトの名無しさん
垢版 |
2023/09/17(日) 13:55:16.79ID:I/olJ+Ch
perl の戻り値の仕組みは面白いと思ったのは古い思い出
0247デフォルトの名無しさん
垢版 |
2023/09/18(月) 11:28:48.80ID:+ud3D/1q
noSQLスレは以前はあった
0248デフォルトの名無しさん
垢版 |
2023/10/06(金) 19:29:28.75ID:Oy8bZUfG
>>246
データベース板を忘れないでください
0249デフォルトの名無しさん
垢版 |
2024/04/15(月) 01:05:12.02ID:3rGFgNqt
入門レベルです
環境はsqliteをsqlite3 CLIを通して使ってます

expr(式)を評価して簡易に値を確かめる方法はあったりしませんかね?
目的は学習目的の挙動把握実験と切り分けデバッグです、例えば'foo' LIKE 'f_%'とかそんなやつを試したい

sqlで実行できるのはstmt(文)のみなので、今のところexprを受け付ける何らかのstmt(文)に組み込み、その結果から値を間接的に類推してます
類推するにせよ、そもそもstmt毎に固有の意味論があるゆえ、一貫した振る舞いも得られず
なかなかしんどいです…

それっぽいCLIコマンドの.printも、シグネチャが.print STRING+なのでexpr評価がされませんし
0250デフォルトの名無しさん
垢版 |
2024/04/15(月) 11:17:52.57ID:fSSptXgn
>>249
> %  0文字以上の任意の文字列
> _ 任意の1文字
> [^] 除外
> https://techmania.jp/blog/sql-like/
正規表現と違い、これだけしかないのに要らないだろ。
お前は 1+1 と打って 2 と出る環境がないと死ぬ人か?

(昨今の文系馬鹿が流入してきてる)プログラミングでは、意味のないところに拘って時間を浪費する奴は多々居る。
お前もこれで、この程度なら読んだ瞬間分かるし、
(勘違いや見落としとかではなく)ガチで 'f_%' が 'foo' に一致するか分からないようならプログラミングを止めた方がいい。
普通なら、というか、自分で作りたい物があってSQLを使おうとしてる奴なら、こんなの読んだ瞬間に「はい分かった、次」でしかない。

初学者向けに環境を整備したいのであれば、インタラクティブ環境を整備する意味は大きいが、お前はそうではないのだろ。
それでも試したければ、所詮は正規表現の下位互換、どころかゴミ程度でしかないので、ブラウザでF12押してコンソールに
'foo'.search(new RegExp('f_%'.replace(/_/g,'.').replace(/%/g,'.*')))!==-1
とでも打てばいいだろうよ。でもこれもお前にとっては余計な回り道でしかないから、とっとと進むべきだと思うがな。
0251デフォルトの名無しさん
垢版 |
2024/04/15(月) 12:03:59.29ID:YG3lrvG/
>>250
やはり標準環境には無さそうな感じですか

LIKEはexprの一番簡単な例としてです
実際のところC系等の一般用途のプログラミング言語と比べてsqlのexpr文法って異常に複雑じゃありません?
https://sqlite.org/lang_expr.html

ASTも印字して欲しいくらいだけど、自分でパーサ書いてみるのも勉強になりそうですね
0252デフォルトの名無しさん
垢版 |
2024/04/15(月) 12:45:09.95ID:cLz3iDP/
普通の言語はstmtの構成要素としてexprが設けられるが、sqlでは逆にexprの中にstmtも入り得る異色の設計だから、exprサブセットのみの評価機は作れないね
まあstmtの評価は単にモックとして構文木を組んでみれば目的には適うし良い勉強になる

区切り文字をあまり使わないSQLは初学者には目に滑る構文だから特にそう
0253デフォルトの名無しさん
垢版 |
2024/04/15(月) 12:57:20.78ID:cLz3iDP/
>>251
評価の確認はおとなしくSQLiteに投げて、構文解析慣れてるようだし見本はこれ参考で十分だろう
https://sqlite.org/src/artifact/741a270b7f2f85bc

lemonって変わったパーサジェネレータ使ってるのけど、見た感じただのyacc変種なので出会ったトークン種別を単に印字させればよいだけ
0254デフォルトの名無しさん
垢版 |
2024/04/15(月) 13:34:40.60ID:fSSptXgn
>>251
> やはり標準環境には無さそうな感じですか
実際要らんしね。SQLがCLIから打てるのだから普通はそれで十分。(普通は=使う人にとっては)
PHPer連中はphpLiteAdminという、SQLがWebから打てる奴を使ってるようだが、動作レベルはCLIと同じでSQLだね。

> sqlのexpr文法って異常に複雑じゃありません?
さあ知らん.。というか俺は使う人であって、環境を構築する人ではないので、
ASTとか使ったこと無いし、yacc/lex/bisonあたりは触ったことが無い。
SQLも基本俺がコードに直接書く程度で、コード上でSQLを自動生成しようとはしたことは無いので分からん。
ただ、目がすべる=SQLの区切りがよく分からん、という感じにはならなかった気がする。カッコ使えで終わるし。

方針として「あらゆる道草を食い、遠回りしてるうちに、全体的な力が養える」という考えの奴もいるが、
今やることがあるなら変なところに拘らず先に進んで実装して行ったほうがいいと思うぜ。
その先にもどのみちハードルはあるのだから、同様に学んではいけ、目標実現に直接近づける。

> ASTも印字して欲しいくらいだけど、自分でパーサ書いてみるのも勉強になりそうですね
ちなみにASTに関心があるのなら、Goの方がいい。あれは標準でAST木を吐ける。
あと、パーサも作るのは自由だが、SQLについては公開された仕様書がなかったはず。
SQL92なら特許は切れてるはずなのだけど。
それから、もうやってるだろうがexplainコマンドでクエリプランを出せる。ASTでは無いが、まあ似たようなものではあるだろう。
0255デフォルトの名無しさん
垢版 |
2024/04/15(月) 14:00:04.64ID:YG3lrvG/
>>252
sqliteの構文図見直したらしっかりselect-stmtってありますねえ…

>>253
まさに求めてたやつです、どうも
各処理系のパーサも見較べるとBison向けでルール/アクションの羅列のpsqlの奴が一番わかり易かった
https://github.com/postgres/postgres/blob/master/src/backend/parser/gram.y

psql用だけど拡張や高度な機能を気にする段階に無いので、ここから必要そうなのを拾い始めました
sqliteのパーサは中でゴチャゴチャ処理してるけど、psqlのパーサはparser/*.cへアクション内で呼ぶ関数がキレイに分離されていて、記述的命名から意味論まで分かるお手本のようなデザインですね
座右の文法リファレンスとして印刷してそのまま使えそうな出来栄え
0256デフォルトの名無しさん
垢版 |
2024/04/15(月) 14:07:24.63ID:YG3lrvG/
>>254
忠告どうも
たまたまSQLという'言語'が面白そうで規格までしっかりある良さそうなもので意欲を得ました
もしこのSQL'言語'が肌に合わなかったならば、プログラミング言語同梱のリレーショナルデータベースAPIへロールバックするでしょう
私の主眼はスレタイ通りSQLにあります
0257デフォルトの名無しさん
垢版 |
2024/04/15(月) 14:23:22.62ID:f5jIOgeT
既にRDBバリバリ管理やってる人こそ学ぶべき
むしろ初学が厳しい見た目のSQLだと挫折率高そう
母語に流暢でも英語をサボる理由にはならない

API通ってる環境なら必然的に埋め込みSQLも使える
0258デフォルトの名無しさん
垢版 |
2024/04/15(月) 14:34:25.57ID:fSSptXgn
>>256
そりゃ規格はあるよ。
ただ無料では仕様書が手に入らないらしい。勿論買えば済むらしいが。

> プログラミング言語同梱のリレーショナルデータベースAPI
てかこれ何ぞ?Oracleのことか?
そもそもDB使ってきててSQL知ラネ、ってのがかなり意味不明なのだが。
ORMの事なら、ぶっちゃけORMで済むのならORMでやるべきだと思うよ。
むしろ今時SQL手打ちか?とも言われてるはずだし。
(AccessとかでもクエリビルダーでSQLを作成してて、SQL自体をプログラマが打ち込む必要はなかったはず)
0259デフォルトの名無しさん
垢版 |
2024/04/15(月) 14:57:46.75ID:2Ew9RCgX
>>258
標準ライブラリ備えてるような言語には大抵RDB接続機能があって、ホストの文法に沿ってクエリ送れるやろ
例えば.NET共通のLINQとか
.NET言語毎にもあったりしてそれこそ無数
0260デフォルトの名無しさん
垢版 |
2024/04/15(月) 15:02:39.91ID:2Ew9RCgX
LINQはRDB以外の色々なデータベースモデルも想定してるからSQLとはかなり違う
LINQでRDB管理に習熟してもSQL知識はあまり付かないと思われ
0261デフォルトの名無しさん
垢版 |
2024/04/15(月) 16:16:36.38ID:Xey1DMe3
>>249
'foo' LIKE 'f_%'とかを試したいならSELECT 'foo' LIKE ‘f_%’;とすればいい
ただSQLを学ぶ目的なら実際に使うSQLでデータのほうを弄りながらいろいろ試したほうが断然効率いいよ
一つ一つ式の評価結果を実際に使うSQLとは別で確認するのは時間の無駄
https://www.db-fiddle.com/f/oUzwVLEEeWgxdxbQN36kvJ/0

あとプログラマー歴が長い人にありがちだけど
SQLをループと条件節のように命令型のパラダイムで捉えるのはお勧めしない
関係演算の感覚を身につける妨げになるから
0262デフォルトの名無しさん
垢版 |
2024/04/15(月) 16:47:19.47ID:fSSptXgn
むう?なんか書き込み失敗して内容も失ったが、覚えてる範囲でもう一度書く。
復活して同様の物が連投されてたらご容赦を。

>>259-260
LINQはSQL風にC#を書ける物で、C#のArrayに対してSQLを発行できるものではなかったと思ったが違ったか?
俺は後者だと思ってたが前者だったので絶望した。あれが有用になる局面がよく分からん。

俺が希望してたLINQ:
.NETのStreamクラスが匿名パイプ/ネットワークストリーム/ファイルの抽象クラスのように、
.NETのArrayや各種DBに対してSQLを発行できるもの
(つまり、接続先がDBなら通常通り、接続先をArrayにすればオンメモリDBとして、同一コードで一文字も変更なく動く物)

実際のLINQ:
for文を書きたくないでござる、だけのクソったれ

俺はあくまでSQLでDB管理する前提で、LINQが何らかのラッパを提供するものだと思ってた。
だから実際のLINQ見て使えねえと判断したが、全く違う方法でDB管理するのかあれは?
俺は勝手に、SQL書けるがC#書けない奴をC#側の戦力として取り込む文法かと思ってたが。


が、まあ、
> プログラミング言語同梱のリレーショナルデータベースAPI
がLINQ等を指すのはわかった。そして ID:YG3lrvG/ の書き込みを読み直すと、
もしかして自前でSQLインタフェース提供しようとしてる?
ならそれは諦めて、DBをPostgreSQL等に移行するほうが妥当だと思うぜ。
0263デフォルトの名無しさん
垢版 |
2024/04/15(月) 18:29:06.40ID:x2iyd0ju
>>262
めっちゃくちゃ基本的なこともわかってないからまずは公式チュートリアル的なのを読んだほうがいい
LINQ to ObjectとLINQ to SQL/DataSet/Entitiesの区別くらいは最低限つくようにしてくれ
0264デフォルトの名無しさん
垢版 |
2024/04/15(月) 19:25:10.27ID:fSSptXgn
>>263
なるほど俺が糞だと思ってたのはLINQ to Objectなのは分かった。
そして俺の思惑とは違い、MSはSQL対象のほうをラップしてるわけか。
俺的希望仕様ならLINQはリテラルか引数で無ければならず、ハードコードベタ書きとか意味不明だったが、
まあこれなら分からんでも無い。

が、そもそもこれはSQLが無駄に方言が増えすぎてたからMSもLINQというSQLモドキを実装しただけの気がするが。
それでもDOMだXPATHだとやるよりはLINQだけで済む方がいいのは確かだが、
ある意味新たなMSSQL方言を生み出しただけの気も。
そしてOracleもSQL方言だとは聞いてるし、やっぱRDB弄っててSQL知ラネ、ってのはよく分からない。
KVSならSQL関係ないが、そういう感じではなさそうだし。まあいいけどね。
0265デフォルトの名無しさん
垢版 |
2024/04/16(火) 08:55:41.54ID:Fr3sHPgG
LINQはSQLに寄せようとしてる雰囲気があるので中途半端感
普通は言語のインメモリオブジェクト操作の方へ寄せるのだが
C#, VB.NET etc.の多言語前提のデザインだからかな

まあWhereとかSelectとかキーワードを借りて文面ぱっと見だけの話
0266デフォルトの名無しさん
垢版 |
2024/04/16(火) 10:35:29.23ID:len5k1k5
>>265
MSなりの折衷策なんだろ。

> 言語のインメモリオブジェクト操作の方へ寄せる
これならORMが最上で、それ以上は無いからね。

PHPにはPDOという、無いよりはましだが実質的に意味が無いラッパがあるが、
あれよりはましなDBラッパを用意して、共通文法を考えました、ってところだろ。
実際、forでウダウダやるより宣言型の方が読みやすいのは確かだから、宣言型文法も取り入れたかったのだろうし。
レスを投稿する


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