PostgreSQL Part.9at DB
PostgreSQL Part.9 - 暇つぶし2ch17:NAME IS NULL
12/05/28 10:58:24.31
>>10
>それより前に別名を展開する処理を追加しただけですね。
正しく動作させるには「前」じゃなくて「スコープの外側」な

from
{
  ①
  where
  {
    ②
    select
    {
      ③
    }
  }
}

「別名を展開」する命令を①~③のどこに書けばいいか分かるだろ?

C言語なんかだとどんな馬鹿でも「前」に書けば自動的にスコープ内に入るから
君みたいなプログラミング初心者ほど「前」に書けばいいという固定観念に縛られて
こういうミスをやってしまうんだよ
君はもっと勉強して脳みそを鍛えたらSQLを使いこなせるんじゃないかなあ

18:NAME IS NULL
12/05/28 11:51:04.41
ちょっと訂正
君はもっと勉強して脳みそを鍛えたらSQL「も」使いこなせるんじゃないかなあ

19:NAME IS NULL
12/05/28 15:29:32.54
SQLにスコープという概念が存在するとは思わなかった。

20:NAME IS NULL
12/05/28 16:18:18.30
>>19

SELECT table1.column1, table2.column2 FROM table1 INNER JOIN table2 ON ・・・

テーブル名で修飾してるのはスコープの概念そのものなんだが理解できるかい?

21:NAME IS NULL
12/05/28 17:57:59.12
処理順無視してないとか言って
SELECT COUNT(foo) AS cnt FROM hoge WHERE cnt > 2 GROUP BY bar;
これを
WHERE COUNT(foo) > 2
こんな展開したら明らかに処理順無視してるじゃねーか・・・
WHEREの方が先に動くっていってんだからよう
たまたまWHERE句でcount関数が使えないだけだろ


22:NAME IS NULL
12/05/28 19:29:41.44
>>19
サブクエリとか分かりやすいスコープ

23:NAME IS NULL
12/05/28 19:31:34.32
>>21
彼は、そういうのはエラーになればいいだろ、展開して問題ないものだけ動けばいいんだという言い分だと思う。
展開して問題ないものの判断ができない場面があることに気づいてないみたいよ。

24:NAME IS NULL
12/05/28 20:12:30.91
>>10は非手続き型言語をまったく理解してない
そもそも 列名 AS 別名 とはselect句の出力の属性を宣言しているのであって、プロシージャ(手続き)を宣言しているわけではない
それにも関わらず「それより前に別名を展開する処理を追加しただけですね。」というのはプロシージャを追加したということになり
もはや非手続き型言語ではない
そんな基本的な矛盾に気がつかないようではプログラマとして致命的だ

25:NAME IS NULL
12/05/28 22:24:55.48
なんだ、楽しみにして帰ってきたのにもう来ないのか?なかなか強烈だったから振り返ってみよう。
いつも過疎で平穏な、DB板のPostgreSQLスレに彼は来た。

「試したところ、エラーになりました。
psql=> select id as ticket_id from tickets where ticket_id < 10;
ERROR: column "ticket_id" does not exist」

どうにもこのエラーが受け入れられないらしい。
思えば初めから他人の話にはほぼ全て否定的であった。
前スレ>>957,968,971,975,978
(そもそもやつがsqlに対して無知だからおかしてる間違いだろ?
字句解析・意味解析の知識はあるか知らんが(ほんとか?評価順の重要さも分かっていないようだが)、
SQLの知識が無いという自覚なしに、誰もsqlを持ち上げたりしてる訳じゃなく仕様を読めって言ってるだけなのに)そう俺は思った。

>SQL信者の必死さに涙が止まらない
あとからこんな言葉が吐かれることになるとは、
この時はまだ思いもしなかった。この言葉は、俺の今後の人生をきっと豊かにしてくれるだろう。

前スレ>>990
>構文解析や意味解析についての、簡単でもいいので基礎知識があれば、
>別名をwhere句で使えるようにするのが特に困難なことではないはずだ、
>というのがすぐにわかるんだけど。
>たぶん構文解析についての基礎知識がないやつが、SQLの仕様書がどうのこうの
>いっているのだろう。
>なぜそういう仕様になっているのかが聞かれているのに、SQLの仕様を読めと
>答えてるのは滑稽すぎる。

最高に恥ずかしい!!!この晩はこれをつまみに一杯やった。
評価順があると、具体例挙げてどう動くか考えろと、言っても無駄だった。
前スレ>>1000
>だーかーら、そのまえにSQLの構文解析と意味解析をしてるでしょうが。
>構文解析 → 意味解析 → FROM句→WHERE句→SELECT句・・・
>            ^^
>           ここで構文解析木を操作して別名を展開すればいいだけ。
>なんでwhere句やselect句の順番にこだわるの。whereやselectの処理に入るまえに別名を展開すればいいだけなのに、なんでこんなことがわからないの。
>なんで結果が変わると思ったの?
とか頓珍漢なこと言っちゃって結局クエリの内容見ないのだ。
(なんで順番にこだわんないの?)よいこのみんなは思ったはずだ。
その後も同じような主張を繰り返した。
(自信満々なのはいいが、人の話をちゃんと聞かないようじゃ何のために質問しに来たんだか…
何かもっと面白い提案でもでるのかと思ってたのに…まぁこんな日も有るか)
大変ワイルドな出来事でした。

26:NAME IS NULL
12/05/28 23:23:23.59
なっが。
てか、元質問者と同一認定していいのか?

27:NAME IS NULL
12/05/29 19:56:25.45
気付いて、顔から火吹いて逃げちゃったんだろうか。
正直なところどう感じたのかをお伺いしたい。

28:NAME IS NULL
12/05/29 20:33:19.53
あれほど自信満々だったら、標準化してるISOなり
pgsql-jpで石井さんに詰め寄るくらいして頂きたかった。

29:NAME IS NULL
12/05/29 20:42:50.92
ここで復讐を果たす為に専門的知識を必死に習得してるのではなかろうか

30:NAME IS NULL
12/05/29 21:34:53.21
いや、きっとmysqlスレで同じ事を質問する
「試したらエラーになりました。簡単なことなんですけど、どうしたらできますか?」ってね
もはや何かの陰謀に違いない

31:NAME IS NULL
12/05/29 23:11:12.20
mysqlだったらあの程度の出鱈目仕様、もう実装してんじゃね?

32:NAME IS NULL
12/05/30 15:16:04.86
死者に鞭打つ真似はおよしなされ

33:NAME IS NULL
12/05/30 16:47:44.19
叩くほうがここまで必死なのにはわけがあるんだろ。

34:NAME IS NULL
12/06/01 14:48:03.25
9.2 32コアまでスケールは凄いな。
index only scanも導入されるし、
カスケードレプリケーション、range型とかも。
もうあれだな。

35:NAME IS NULL
12/06/01 14:53:46.91
客にバージョン上げようぜっていいやすくなるな

36:NAME IS NULL
12/06/02 00:17:26.28
やっぱりポスグレは最先端なのですね!
マイエスキューエラーに馬鹿にされなくて済みます

37:NAME IS NULL
12/06/03 00:11:20.77
ちょっと前までMySQL使ってて、ポスグレちょぼちょぼ使い出したとこやけど、
WITHが便利過ぎてワロタ。

とあるテーブルAから、条件に合うレコード削除して
その内容を「削除済み」用のテーブルBに書いて、
ついでにテーブルCの該当レコードのフラグカラムを書き換え。

これが一文一発で出来て、明示的なトランザクション制御要らず。
気持ち良過ぎやろ。


最新レス表示
レスジャンプ
類似スレ一覧
スレッドの検索
話題のニュース
おまかせリスト
オプション
しおりを挟む
スレッドに書込
スレッドの一覧
暇つぶし2ch