無いものは抽出できない、とは思うのですが… 0690NAME IS NULL2018/02/15(木) 18:56:53.86ID:???>>689 LEFT JOIN
スレチじゃね? 0691NAME IS NULL2018/02/15(木) 19:10:24.66ID:L39WhMJw>>689 自ら吐いた言霊に呪われとるやんw
無いのは売上 抽出するのは顧客
な? 0692NAME IS NULL2018/02/15(木) 21:10:45.04ID:??? SELECT * FROM 顧客テーブル WHERE NOT 顧客ID IN (SELECT 顧客ID FROM 売上テーブル)
みたいな風かな 0693NAME IS NULL2018/02/15(木) 21:23:39.60ID:???>>692 そういうINの使い方は悪手だよ NOT EXISTSかLEFT JOINを使おう 0694NAME IS NULL2018/02/15(木) 21:23:57.09ID:???>>689 >>690で答え出てるけどないものを抽出するんじゃなくて、「売上に紐付かない顧客」を抽出するってこと 0695NAME IS NULL2018/02/15(木) 21:31:33.97ID:???>>694 そういうJOINの使い方は悪手だよ NOT EXISTSを使おう 0696NAME IS NULL2018/02/15(木) 21:40:30.01ID:??? exists は確かにわかりやすい記述だけど遅い 大量のデータで使うとサーバーが唸る できるならinner joinでやったほうがいい http://kkoudev.github.io/blog/2013/09/14/sql/0697NAME IS NULL2018/02/15(木) 23:18:27.60ID:???>>696 NOT EXISTSをINNER JOINにするのは無理だし MySQLはNested Loopしか使えないからね 他の一般的RDBとは事情が違うよ 0698NAME IS NULL2018/02/15(木) 23:21:53.94ID:???>>695 NOT EXISTSのほうがパフォーマンスいいことのほうが多いけど LEFT JOINが悪手ってわけでもないと思うけどな
少なくとも質問者はLEFT JOINを理解してない風なので そっちからはじめたほうがいい 06996892018/02/16(金) 00:03:31.60ID:??? みなさまありがとうございます。 LEFT JOINでできるとは思いませんでした…頭が硬いですね。 教えていただいたNOT EXISTSも調べたところまさにやりたいことでした。 何とかなりそうです。 ありがとうございました。 0700NAME IS NULL2018/02/16(金) 00:31:27.89ID:???>>695 環境、データ、インデックスとかによって違うからお前さんみたいに盲信してるのが一番ヤバイ 0701NAME IS NULL2018/02/16(金) 01:49:40.19ID:nepixz1J 経験上LEFT JOIN でIS NULLのほうが速い場合がほとんど 0702NAME IS NULL2018/02/16(金) 02:02:09.86ID:??? パフォーマンス気にするなら計測すればいい >>700の言うように状況によって結果は変わる https://sqlperformance.com/2012/12/t-sql-queries/left-anti-semi-join0703NAME IS NULL2018/02/16(金) 05:41:07.18ID:???>>692さんみたいな書き方を良くするんですが、これは遅いのですか? 0704NAME IS NULL2018/02/16(金) 05:43:00.22ID:??? あっ、ただ自分の場合は
「WHERE NOT 顧客ID IN (SELECT 顧客ID FROM 売上テーブル)」
ではなく
「WHERE 顧客ID NOT IN (SELECT 顧客ID FROM 売上テーブル)」
と書きます。 0705NAME IS NULL2018/02/16(金) 10:17:03.78ID:??? 売上げテーブルに顧客IDでインデックス貼ってあればそんなに遅くない気もする 0706NAME IS NULL2018/02/16(金) 10:51:09.70ID:??? 692は自分だけど、後でみなさん言われるとおり
SELECT * FROM 顧客テーブル WHERE NOT EXISTS (SELECT TOP 1 FROM 売上テーブル WHERE 顧客ID=顧客テーブル.顧客ID)
のほうが速そうだな 0707NAME IS NULL2018/02/16(金) 12:21:10.95ID:??? 速いとか遅いとか気にしたいんならDBが適切にメンテされているかを考えるべきやな SQLの表記のゆれなど考えるだけ無意味 0708NAME IS NULL2018/02/16(金) 15:52:24.98ID:??? NOT INの場合はパフォーマンス以前に 顧客IDがNOT NULLじゃないと意図した結果が得られない可能性がある
NOT NULLなら意図した結果が得られるけど、速度はDBの最適化に依存 INの最適化レベルが高いDBならNOT EXISTSと同程度の速度に場合もある でもそうならない場合もあるからこういうケースでは基本使わない 0709NAME IS NULL2018/02/16(金) 16:42:30.61ID:G4Vvw6Lg 【アマルガム】水銀を歯に? 厚労省『暴動が怖い』 http://mao.5ch.net/test/read.cgi/doctor/1517058870/l50 【ペットフード】告発したら3人組に棍棒で襲われた http://egg.5ch.net/test/read.cgi/hosp/1517110484/l50 【マンモグラフィー】おっぱい挟んで癌検査…必要? http://egg.5ch.net/test/read.cgi/bio/1517115639/l500710NAME IS NULL2018/02/16(金) 20:39:05.84ID:yNJxj2Lb>>700 環境、データ、インデックスとかによって違うからお前さんみたいに テストした環境でLEFT JOINが速いからLEFT JOINにしてしまう奴が一番ヤバイ 0711NAME IS NULL2018/02/16(金) 20:59:00.37ID:???>>710 うまい返ししたつもりなんだろうけどアホ晒してるだけやぞww 0712NAME IS NULL2018/02/16(金) 21:08:47.07ID:yNJxj2Lb>>711 普通に答えただけだけどうまかったか?w マジかwセンスあんな俺www 0713NAME IS NULL2018/02/16(金) 21:32:20.04ID:??? 誰か試してみてよ 0714NAME IS NULL2018/02/16(金) 21:53:09.91ID:??? 単純なnot inならouter joinと同じ実行計画吐いたきがする 0715NAME IS NULL2018/02/16(金) 22:16:06.50ID:yNJxj2Lb>>714 だからたまたまその時その環境でそういう実行プランが作られたという経験を 後生大事に今生の知識として胸にしまいこんでも無駄だと言っておろうが
SQLはいつだってよりシンプルにより直接的にやりたい事を表現してる様に書くべきなんや 0716NAME IS NULL2018/02/16(金) 23:37:28.84ID:???>>712 誰もうまい返しとは言ってないぞ 日本語の理解力もないとな w 0717NAME IS NULL2018/02/17(土) 00:10:23.40ID:RRaJ3TQN>>716 は?こっちこそお前がうまい返しと言ったとは言っとらんが??? 異次元の理解力だなお前… というかアスペだなwww 0718NAME IS NULL2018/02/17(土) 00:12:55.27ID:??? ここもID強制表示にしてほしいな 0719NAME IS NULL2018/02/17(土) 00:21:22.92ID:???>>717 > というかアスペだなwww 自己紹介乙w 0720NAME IS NULL2018/02/17(土) 15:34:21.57ID:lIYg2W3z 5chはROM専みたいな筆不精は、長文が書かれていると、時間をかけて書いていると思い込む。
世の中、超速で読み書きができる人間がいるのだよ。 0721NAME IS NULL2018/02/17(土) 16:12:56.45ID:??? コピペの達人 0722NAME IS NULL2018/02/17(土) 16:15:51.02ID:???>>720 いきなりどうした? 0723NAME IS NULL2018/02/18(日) 01:31:05.23ID:JhkmGsBQ>>721 オリジナルです 0724NAME IS NULL2018/02/18(日) 01:32:48.22ID:JhkmGsBQ 仕事でやってるなら仕事が異常に速いひとを知ってるはずだけどな。並の人間の20倍、30倍くらい仕事が速い人もいる。 0725NAME IS NULL2018/02/19(月) 05:02:12.33ID:??? 1.5人月で見積もられた仕事を1日で片付ける人か。 さすがにそれは見たことないわw 0726NAME IS NULL2018/02/19(月) 12:21:33.79ID:??? めちゃくちゃキーボード打つの速そう 0727NAME IS NULL2018/02/19(月) 19:22:31.89ID:??? 30人にやらせれば余裕で1日で終わるというのに 0728NAME IS NULL2018/02/19(月) 19:45:21.08ID:???>>726 そんな思考だから仕事遅いんだよ できる人できない人の違いすら理解できてない 0729NAME IS NULL2018/02/19(月) 20:26:20.69ID:??? だな キーボード打つ速度とかマジ関係ない 0730NAME IS NULL2018/02/19(月) 20:33:52.86ID:md3NX5hc 仮に1.5人月のコードを5000行とすると 1日でそれ書いて、さらに仕様書とかも書いてテストもするんやで? めちゃくちゃ打つの速いやん 0731NAME IS NULL2018/02/19(月) 20:40:21.60ID:??? 今どき行数で考えるなよ 0732NAME IS NULL2018/02/19(月) 20:55:39.42ID:md3NX5hc>>731 何で考えても書く行数は変わらんのだけどw 0733NAME IS NULL2018/02/19(月) 21:14:39.42ID:??? 無能な働き者の手による大量の無駄なコードは有能な怠け者の手による洗練された短いコードに劣る 0734NAME IS NULL2018/02/19(月) 22:24:25.26ID:md3NX5hc な?具体的に数字だされると速いやろw 0735NAME IS NULL2018/02/19(月) 23:38:27.02ID:???>>732 724が言ってるような並の人間より仕事が20倍30倍速いやつってのは 並の人間が5000行書かないと実現出来ない処理を200行程度書くだけで実現したりできるわけ キーボードだってできるだけ打たなくていい方法を考える
見積もり時に書く行数がほぼ固定されてるような仕事してるなら できるだけそこから早く抜け出すことだな 0736NAME IS NULL2018/02/20(火) 07:11:59.70ID:D0Bn3/BK>>735 それコードが圧縮されとるだけやんwコードゴルフかw コードは20倍圧縮されても作業にかかる時間は速くなっとらんでそれwww 0737NAME IS NULL2018/02/20(火) 07:20:13.02ID:??? 典型的な無能の発想だな 0738NAME IS NULL2018/02/20(火) 08:05:15.51ID:oDlAdTII お前らはどうしてスキルないくせに突飛な主張してマウントとりたがるんや? 俺は笑えるからこうして楽しんどるけど一般的にはみっともないだけやでw 0739NAME IS NULL2018/02/20(火) 14:51:54.91ID:??? どれだけ優秀な人間だろうと、1.5人月で見積もった仕事を1日で片付けたらな そもそもの見積もりがぼったくりすぎるだけだな 0740NAME IS NULL2018/02/20(火) 17:42:37.73ID:???>>736 コードを圧縮て 斜め上の発想だね 0741NAME IS NULL2018/02/20(火) 17:49:18.93ID:??? メタプログラミングやコードジェネレーションを考えればいいと思うよ できるやつは無駄を省いて機械に仕事をさせる Paul GrahamのLispの話と同じ 0742NAME IS NULL2018/03/03(土) 09:21:09.95ID:??? 新進気鋭の「グラフデータベース」って用途が思いつかないな 0743NAME IS NULL2018/03/03(土) 16:40:26.84ID:??? RDBはグラフと相性悪いからな 用途が思いつかないうちは使う必要ない 0744NAME IS NULL2018/03/03(土) 19:29:07.99ID:??? ビッグデータ()とかバズりたい奴向けやろ 0745NAME IS NULL2018/03/03(土) 21:51:50.18ID:??? 一昔前の技術で言えば多次元DBと同じようなもん RDBみたいにあらゆる所で使われる技術ではない 0746NAME IS NULL2018/03/03(土) 21:52:38.80ID:??? グラフデータベース=ビッグデータ() とか言ってると恥ずかしいよ 0747NAME IS NULL2018/03/04(日) 01:22:04.38ID:elOR/YZE 何年前の話題やねんw 0748NAME IS NULL2018/03/06(火) 20:30:45.91ID:Y3UcuCKK 間違えて全データ消してしまったんですが ldf/mdfファイルから消す直前のデータに戻す方法ってありますか? 0749NAME IS NULL2018/03/06(火) 22:48:19.99ID:??? バックアップあるなら戻せばいいじゃん? リカバリモデルにもよるけど 0750NAME IS NULL2018/03/07(水) 00:02:46.51ID:/Gdd1MyZ bakファイルがなくてldf/mdfファイルだけの状態です 0751NAME IS NULL2018/03/07(水) 00:20:24.26ID:??? 何を消してどういう状態のldf/mdfからデータを戻したいかによるよ この辺でも読んで対処して https://docs.microsoft.com/ja-jp/sql/relational-databases/backup-restore/restore-a-sql-server-database-to-a-point-in-time-full-recovery-model
よく分からなければチャリーンと https://www.apexsql.com/sql_tools_recover.aspx0752NAME IS NULL2018/03/13(火) 12:58:28.97ID:jwO7/+7T 2017 Expressへ32bit windows7接続出来ますか? 0753NAME IS NULL2018/03/13(火) 17:08:26.50ID:??? できますよ 0754NAME IS NULL2018/03/14(水) 07:45:47.09ID:znnrpK8K ありがとうございました。 WINDOWS認証ですが18456エラーが出ます、あとLOGを見ると明示的に指定されたデータベースを開けませんでした。 とあります、何が悪いのでしょうか? 今までは2005 EXPRESSでした。 0755NAME IS NULL2018/03/14(水) 13:40:26.89ID:??? 何時のVerからかは忘れたが、今はマシン名\インスタンス名の形式で指定してやらんと繋がらない 例えばlocalhost\SQLEXPRESS 0756NAME IS NULL2018/03/14(水) 15:02:13.68ID:znnrpK8K>>755そうですか?試してみます、ありがとうございました。 0757NAME IS NULL2018/03/14(水) 19:11:25.05ID:???>>754 そのエラーコード以外に状態コードが出てるでしょ それ込みでググればだいたい原因分かるよ
Management StudioについてはどのRDBMSより経験がなくても直感的にわかりやすい。 0780NAME IS NULL2018/05/04(金) 01:38:57.38ID:l3Y7dHLE>>774 SQL Server 2005、2008以降は大きく変わっていないから、特に翔泳社の本は役に立つよ。
最近のSQL Server本は本当に役に立たない。特にマイクロソフト公式本はひどい。
秀和システムの赤い本もひどい。 0781NAME IS NULL2018/05/04(金) 08:19:21.05ID:???>>779 なんで翻訳物に手を出すの? 0782NAME IS NULL2018/05/04(金) 09:42:04.84ID:l3Y7dHLE>>781 ? 0783NAME IS NULL2018/05/04(金) 10:54:05.67ID:???>>782 >マイクロソフトはどの製品も作りっぱなしでマニュアルは自動翻訳のよくわからないものばかり。 0784NAME IS NULL2018/05/04(金) 13:58:18.36ID:l3Y7dHLE>>783 マイクロソフトのサイトを見たことがないの? 0785NAME IS NULL2018/05/04(金) 14:04:11.53ID:???>>784 ごめんね自動翻訳なんて見ないんだ