はてなキーワード: SELECTとは
https://anond.hatelabo.jp/20240507125309
はい。
ではなく、SQLは処理じゃなく、定義であることを理解するのが大切。
何の定義かと言えば、リレーショナルデータモデルへの演算定義なんだよ。この演算には、関係代数という演算を使う。
なぜ定義だと認識する必要があるかという、Selectは出力でも何でもなく、射影という演算の一部なんだよ。
"+3" とかと一緒
で、関係代数演算は順位にもちろん意味がある。最初に"射影"して"選択"かけたら全く別になる。
SQLは、この演算順位を、SelectやWhereの中で状況によって意味が変わる。という出鱈目なカバーで逃げた。Order byで悩んだろ。
さらに言えば、苦肉の策でWhereのパチモンはどうしても2回必要でHavingを作ったのよ
本来で言えば、この演算は、選択-結合-射影-結合といくらでも出来る。
「足し算は頭に一回書いてください。複数使う時はかっこつけて下さい。ちなみに、掛算を一緒に使うと足し算の意味が変わり場合によってはエラーです」みたいな安直な構造定義しちゃってるの。
リレーショナルモデルへの演算としてだダサダサで、リレーショナルモデルの演算の複雑さではなくSQLという表現の都合で人類の頭に負荷かけ続けてる。
出力が頭にあるのは便利(間違い)。英語だから(間違い)。って言われると何言ってるんだーって、ちょい昔のまともなデータベースエンジニアなら普通にキレてた案件
使うテーブルがどこになるとか項目名がどうなるかが、from以降書いてからじゃないと判断しにくいことが多いので
処理書くときの最初にselect句の内容が書きにくいってことは結構あると思う。
確かに書くときはselect句を最初に書きにくいことはよくある。
でもそれだけのことで、いったん空白にしておいてfrom以降を書く程度の手間でカバーできてる。(その点ではそのツールの方が便利なんだろう)
https://b.hatena.ne.jp/entry/s/www.docswell.com/s/hoxo-m_inc/Z4Q8NL-2024-05-06-203800
まともにコンピューターサイエンスやってSQL使ってれば
「わかるー射影はステップの最後なのに、selectに名前変更とか拡張とか全部乗せて先に書くのキモいよねー」
の一言で終わりなのよ。
ブクマカは、英語ですからとか言い出してる。英語だからって集合演算で射影を先に書くなんてねえよw
やばいSQL使ってるのに、SQLで実現してることが分かってない。さらには俺はSQLに詳しいとかいう雰囲気出しててやばいw
高度な話題?なわけねえだろwiki読むだけでいいレベルなのよ。
https://ja.wikipedia.org/wiki/%E9%96%A2%E4%BF%82%E4%BB%A3%E6%95%B0_(%E9%96%A2%E4%BF%82%E3%83%A2%E3%83%87%E3%83%AB)
X検索すると似たような言及してる奴が多いし、別に高度な問題でも何でもないのである。というか基本情報の範囲。
こんなのがテクノロジーカテゴリでマサカリなげてる。一般カテゴリの劣化はどっちかつうと過激なんだけど、テクノロジーカテゴリは明確に馬鹿が進んでる。
まあselectで書き換えられることはないと思うけど…(負荷はかかるだろうけど…
純粋の他46地域には存在する、ガチのないものねだりは太字で記載する
また10地域ないものについては記載しないので勝手に連合を組んでください
(ジョイフル、デニーズ、ロイヤルホスト、バーミヤン、いきなりステーキ、かっぱ寿司、ホビーオフ、AOKI、はるやま、コナカ、エディオン、くまざわ書店、紀伊國屋書店、三菱UFJ銀行、Amazon Hub、QBハウス)
do until activecell.value = ""
やりたいこと
activecell.offset(1,0).select
これだけでだいたいいける
ネットに公開されている情報は、初心者には難しいと感じました。
Yamahaのサイトにconfigは公開されていますが、exciteMEC光だと、クリアする注釈が多すぎて。
"NVR500 では、tunnel endpoint address コマンドを使用して、AFTR の IPv6アドレスを指定してください。"
って書いてますが、exciteMEC光はAFTR公開してないぞ!ってなるので。
正解は[gw.transix.jp]のIPv6アドレスを指定する、で
"tunnel endpoint address 2404:8e01::feed:101"です。
以下、全文。
#
# transixのIPv4接続(DS-Lite)でインターネット接続
#
#
#
#
# ゲートウェイの設定
#
ip route default gateway tunnel 1
#
#
ip lan1 address 192.168.100.1/24
#
#
ipv6 prefix 1 ra-prefix@lan2::/64
ipv6 lan1 address ra-prefix@lan2::1/64
ipv6 lan1 rtadv send 1 o_flag=on
ipv6 lan2 dhcp service client ir=on
ipv6 lan2 secure filter in 1010 1011 1012
ipv6 lan2 secure filter out 3000 dynamic 100 101 102 103 104 105 118 119
#
# トンネルの設定
#
tunnel select 1
tunnel endpoint address 2404:8e01::feed:101
tunnel enable 1
#
# フィルターの設定
#
ipv6 filter 1010 pass * * icmp6 * *
ipv6 filter 1011 pass * * tcp * ident
ipv6 filter 1012 pass * * udp * 546
ipv6 filter 3000 pass * * * * *
ipv6 filter dynamic 100 * * ftp
ipv6 filter dynamic 101 * * domain
ipv6 filter dynamic 102 * * www
ipv6 filter dynamic 103 * * smtp
ipv6 filter dynamic 104 * * pop3
# ipv6 filter dynamic 105 * * submission
ipv6 filter dynamic 118 * * tcp
ipv6 filter dynamic 119 * * udp
#
# DHCPの設定
#
dhcp service server
dhcp server rfc2131 compliant except remain-silent
dhcp scope 1 192.168.100.2-192.168.100.191/24
#
# DNSの設定
#
それを100件くらいinsertしてみて
いろんな条件でselectしてみて
それを100件くらいinsertしてみて
いろんな条件でselectしてみて
環境構築はできてる
みたいなのも分かる
けど
そっから先のTwitterみたいなの作ろうとした時どういうテーブル作ってどういうクエリでSELECTすれば良いのか分からん
chatgptで
「sqlite3でtwitterみたいなサイトのテーブル設計をして。
上記のTwitterのようなサイトで特定のユーザーのタイムラインを表示するクエリの例を教えて」
って聞くと、こういうの表示されるけど、こんなの絶対パッと思いつかんやろ!!
特にJOIN2回使うのが全然分からん。なんならJOIN1回の部分も分からん
っていうか、hatena君、sqlのシンタックスハイライトするとインターナルサーバーエラー返してくるんだが...
class Foo def bar'baz' # return baz end end
sqlだけっぽい......
CREATE TABLE users ( id INTEGER PRIMARY KEY AUTOINCREMENT, username TEXT NOT NULL, email TEXT NOT NULL UNIQUE, password TEXT NOT NULL, created_at DATETIME DEFAULT CURRENT_TIMESTAMP ); CREATE TABLE tweets ( id INTEGER PRIMARY KEY AUTOINCREMENT, user_id INTEGER NOT NULL, body TEXT NOT NULL, created_at DATETIME DEFAULT CURRENT_TIMESTAMP, FOREIGN KEY (user_id) REFERENCES users (id) ); CREATE TABLE follows ( follower_id INTEGER NOT NULL, followed_id INTEGER NOT NULL, created_at DATETIME DEFAULT CURRENT_TIMESTAMP, PRIMARY KEY (follower_id, followed_id), FOREIGN KEY (follower_id) REFERENCES users (id), FOREIGN KEY (followed_id) REFERENCES users (id) ); SELECT tweets.id, tweets.body, tweets.created_at, users.username FROM tweets JOIN follows ON tweets.user_id = follows.followed_id JOIN users ON tweets.user_id = users.id WHERE follows.follower_id = [特定のユーザーID] ORDER BY tweets.created_at DESC;
やったー!プログラムとか全くわからんけどChatGPTに聞いたら前から欲しかったブックマークレットの機能を簡単に作ってくれたぜ
JavaScriptで今見ているサイトのタイトルをクリップボードにコピーするブックマークレットのコードは、以下のようになります。
javascript:(function(){
let input = document.createElement("input");
document.body.appendChild(input);
input.select();
document.execCommand("copy");
document.body.removeChild(input);
alert("クリップボードに「" + title + "」をコピーしました。");
})();
40-43インチ 4K 液晶モニター https://kakaku.com/pc/lcd-monitor/itemlist.aspx?pdf_Spec101=20&pdf_Spec301=40-43&pdf_so=p1
最安値 フィリップス 438P1/11 [42.51インチ ブラック]
¥49,800 税込み
ディーライズ
43V型AX-MSK43
税込32,780円
TCL 43V型4K対応液晶 チューナーレススマートテレビ e angle select 43V型4K 43P63E
¥49,800(税込)
JAPANNEXT JN-VT5001UHDR [50インチ]
¥53,976(税込み)
イートレンド
(全19店舗)
50V型AX-MSK50
税込38,280円
TCL 50V型4K対応液晶 チューナーレススマートテレビ e angle select 50V型4K 50P63E
¥59,800(税込)