0034NAME IS NULL2018/02/04(日) 15:29:21.67ID:gIv0OydZ 訂正
「結果」 3 | ccc | 6 | c_key1 4 | ddd | NULL | NULL 0035NAME IS NULL2018/02/04(日) 17:18:13.30ID:???>>33 SQL-Server なら select T.ID as ID, T.NAME as NAME, T.ID2 as ID2, T.DATA as DATA from ( select row_number() over ( partition by TableA.Id order by case TableB.[KEY] when 2 then 0 else 1 end, TableB.[KEY] asc ) as R, TableA.ID as ID, TableA.NAME as NAME, TableB.ID2 as ID2, TableB.DATA as DATA from TableA left join TableB on TableA.ID = TableB.ID ) T where T.R = 1 0036NAME IS NULL2018/02/04(日) 17:38:30.70ID:gIv0OydZ>>35 ありがとうございます 使用しているのはMariaDB 10.1でしたが(書き忘れ失礼しました)、頂いた解答をヒントに試してみます 0037NAME IS NULL2018/02/04(日) 18:26:18.34ID:???>>36 う〜ん、MariaDB使ったことないけど https://mariadb.com/kb/en/library/row_number/ を見るとrow_number()は10.2.0以降でないとダメみたい 10.2.0には上げられないの? 0038NAME IS NULL2018/02/04(日) 18:33:52.86ID:gIv0OydZ>>37 こちらもちょうどそこに行き着いてました バージョンを上げることは可能なので最新版にアップデートして試してみようと思います わざわざ調べて頂き感謝します 0039NAME IS NULL2018/02/14(水) 13:22:57.02ID:??? ☆ 日本の、改憲をしましょう。現在、衆議員と参議院の両院で、 改憲議員が3分の2を超えております。『憲法改正国民投票法』、 でググってみてください。国会の発議はすでに可能です。 平和は勝ち取るものです。お願い致します。☆☆ 0040NAME IS NULL2018/02/15(木) 23:04:18.91ID:??? SQLがなかなか覚えられません SELECT が先頭に来るのは覚えていますが、 次がFROMか、WHEREか迷ったりします なにか覚えやすい方法ってありますか? 0041NAME IS NULL2018/02/15(木) 23:30:33.91ID:??? 暗記 0042NAME IS NULL2018/02/16(金) 00:34:33.15ID:???>>40 順番はきっちり決まってるから覚えれば迷うことはない それすら覚えられないならマやめた方がいい 0043NAME IS NULL2018/02/16(金) 07:59:00.96ID:???>>41-42 ありがとうございます 覚えます 0044NAME IS NULL2018/02/22(木) 17:16:09.65ID:??? 集計で、nullがあれば0で、nullが1つもない場合は最大値や最小値を取ってくるような書き方ってないでしょうか? 0045NAME IS NULL2018/02/22(木) 18:10:39.74ID:???>>44 CASE式で
SELECT c1, CASE (SELECT count( * ) FROM t1 AS a WHERE a.c1 = b.c1 AND c2 IS NULL) WHEN 0 THEN sum(c2) ELSE 0 END FROM t1 AS b GROUP BY c1
設計見なおしたほうがいいパターンだと思う 0046NAME IS NULL2018/02/22(木) 18:30:09.05ID:??? 少し違うやり方だけどこっちのほうがパフォーマンスはいいかも。
SELECT c1, CASE sum(c3) WHEN 0 THEN sum(c2) ELSE 0 END FROM (SELECT c1, c2, CASE WHEN c2 IS NULL THEN 1 ELSE 0 END AS c3 FROM t1) AS t2 GROUP BY c1 ORDER BY c1; 0047NAME IS NULL2018/02/23(金) 10:11:31.58ID:???>>45>>46 ありがとうございます! 後者の方が問い合わせが少ない感じで良さそうですね。 0048NAME IS NULL2018/02/23(金) 21:55:14.87ID:0la0B0YA uelect文を2つ書いてunion allの方がよっぽど可読性が高い。 0049NAME IS NULL2018/02/23(金) 22:08:01.48ID:KWaEL2bi union言いたすぎてuelectになっちゃう奴カワユスw 0050NAME IS NULL2018/02/23(金) 23:22:19.25ID:???>>48 その可読性が高いやつ提示しなよ 0051NAME IS NULL2018/02/24(土) 09:47:28.16ID:??? uelectあるじゃん 0052NAME IS NULL2018/02/24(土) 10:02:55.41ID:??? ウェレクト 0053NAME IS NULL2018/02/24(土) 19:12:40.41ID:Au0dOZ0B セレクト 0 as カラム別名 from テーブル名 group by グループ列名 having 列名 is null union all セレクト max(カラム名) as カラム別名 from テーブル名 group by グループ列名 having 列名 is not null 0054NAME IS NULL2018/02/24(土) 20:27:08.92ID:pUuArQ+S uelectになるのにビビってセレクトになっちゃう奴カワユスw 0055NAME IS NULL2018/02/24(土) 20:41:54.02ID:??? いつもSQL書かずに意味不明なイチャモンだけつけてた人が 珍しくSQL書いたと思ったらやっぱり意味不明なSQLじゃんか havingの意味分かってないんだろうな 0056NAME IS NULL2018/02/24(土) 20:54:00.99ID:pUuArQ+S>>55 おい勘違いするな いつも意味不明なイチャモンつけてるアゲは俺だ アゲだからといってバカと一緒にされては困るなw 0057NAME IS NULL2018/02/25(日) 00:08:49.03ID:??? union all期待してたのに。。。こんな結果なの??
>>45のやつはCASE WHEN EXISTSにしたほうがよかったね 0058NAME IS NULL2018/02/25(日) 03:10:53.80ID:??? SEなんだが殆ど要件定義とか折衝が主担当だから SQLの知識があんまりなくていつも効率悪い調査の仕方だったりベンダーさんに投げてしまったりになってしまうんで質問させてください 使用しているのはoracle SQLです。 下みたいなAテーブル、Bマスタがあって Aテーブル(トラン) no 名前 上長名前 日付
を抽出したい場合はどうすればよいでしょうか? 実業務ではベンダーさんからの報告で解決したのですが次からは自分でも頑張ってみたくて勉強したのですが実際に書こうと思うと全く上手くいきませんOTL 0059NAME IS NULL2018/02/25(日) 03:25:04.65ID:???>>58 とりあえず自分の思うように書いてみ 0060NAME IS NULL2018/02/25(日) 03:51:57.01ID:???>>59 すみません構文もめちゃくちゃだし途中まで書いてわからなくなっちゃったのですが 上から一つ目 select B.名前,B,社員番号 from Aテーブル A inner join Bマスタ B on A.名前 = B.名前 or A.上長名前 = B.名前 where A.日付 between B.適用開始日 and B.適用終了日
元は営業職で今期から情報部に異動してきて勉強はしてるのですがまったくわかりません・・・ 本職SEの方の文の書き方の考え方のコツなんかも教えていただけるとうれしいです 0061NAME IS NULL2018/02/25(日) 15:25:45.40ID:EdN+hOz0>>55 having に集計関数と書かずにカラム名と書いたら、見事にそこだけ問題視するんだな。
セレクトと書いているのもSQLインジェクション対策に引っかかるため。 0062NAME IS NULL2018/02/25(日) 15:27:53.61ID:EdN+hOz0 セレクト 0 as カラム別名 from テーブル名 group by グループ列名 having グループ列名 is null union all セレクト max(グループ名) as カラム別名 from テーブル名 group by グループ列名 having max(グループ名) is not null 0063NAME IS NULL2018/02/25(日) 15:29:20.92ID:EdN+hOz0 曖昧質問に対して勝手な想像で要件を決めつけて答えるのはよくない。
そもそもSQLをずばり教えてくれというのが間違い。 0064NAME IS NULL2018/02/25(日) 15:31:10.48ID:EdN+hOz0>>57 select句にselect文を書くのを推奨するな。 0065NAME IS NULL2018/02/25(日) 15:37:06.31ID:EdN+hOz0>>60 あなたが書いているとおりに書けばよい。
なぜ一つのSQLでいきなりやろうとするのか? 0066NAME IS NULL2018/02/25(日) 15:39:24.08ID:EdN+hOz0>>60 3パターンの整理をせよ。 0067NAME IS NULL2018/02/25(日) 15:44:37.91ID:EdN+hOz0>>60 それあなたのいう1つ目もできていない。 少なくともそのSQLにこだわりがあるのなら、内部結合ではなく外部結合しなければ、1つ目も達成できていない。 0068NAME IS NULL2018/02/25(日) 15:45:55.07ID:???>>62 ここで動かしてみてくれよ そういうクエリでも動くDBMSがあるんならぜひ知りたい http://sqlfiddle.com/#!17/05796a0069NAME IS NULL2018/02/25(日) 15:46:29.20ID:???>>64 なんで? 0070NAME IS NULL2018/02/25(日) 17:49:37.39ID:fHMtmeQ2 順当にバカが発狂しとるなw 0071NAME IS NULL2018/02/25(日) 18:35:17.10ID:???>>60 1. SQLの研修を受ける 2. 最小限のテストデータを作成して試行錯誤を繰り返す 3. 少し高度なクエリをWebや書籍で学ぶ
まず1と2をやること(>>58のやつはSQLの研修を受講すれば解決できるレベル) 基本的なクエリは問題なく出来るようになってから3に進む 3はミックのブログやセルコの本がおすすめ 0072NAME IS NULL2018/02/25(日) 18:36:47.80ID:??? あと要件定義が主な担当なら SQLの書き方よりもDB設計を学んだほうが役立つ度合いが大きいよ 0073NAME IS NULL2018/02/25(日) 21:06:12.14ID:???>>58 http://sqlfiddle.com/#!9/81ab8/1
2つめはfilter句が使えるDBもあるけど普通はCASE式かな 0074NAME IS NULL2018/02/26(月) 00:51:55.29ID:???>>71 SQLの受講は予定してるけど・・・ ここってそういうの教えてくれる板じゃないの? 勉強法なんて聞いてないんだが 0075NAME IS NULL2018/02/26(月) 02:37:26.99ID:??? こいつはクズだね〜w 営業をお払い箱になって情シスでもお荷物だな 0076NAME IS NULL2018/02/26(月) 02:57:29.29ID:??? 簡単に解決できるレベルとかいって勉強法講釈たれる奴もどうかと思うがな 0077NAME IS NULL2018/02/26(月) 14:57:52.44ID:??? >ベンダーさんに投げてしまったりになってしまうんで とか言ってるやつがこのスレに投げるだけになるんだぜ 鬱陶しいだろ 0078NAME IS NULL2018/02/26(月) 16:34:56.99ID:??? 問題を解くコツを教えてもらおうとする前に基礎を学べってことだろ 内部結合や外部結合は算数で言えば四則演算レベルの基礎なんだからさ 0079NAME IS NULL2018/02/26(月) 19:15:23.41ID:k450wkRK 教えたがりのくせに質問には答えたくないてどないやねんw そのややこしい承認欲求どうにかしろやw 0080NAME IS NULL2018/02/26(月) 20:28:10.94ID:???>>60だけど やっぱりSEって気持ち悪いな ベンダー嬲り倒すことにしたわ てか早く答えろやwwwPGしかできないアホなんだからこれくらいすぐ答えだせwwwwww 0081NAME IS NULL2018/02/26(月) 20:56:37.17ID:??? 答え出てるだろww 0082NAME IS NULL2018/02/26(月) 20:59:21.87ID:???>>81 どこが出てるんだよwwwwww やっぱSEって頭おかしいのしかいないのなwwwwww 0083NAME IS NULL2018/02/26(月) 21:13:20.39ID:??? おまえマジかww 回答してくれた気持ち悪いエス・イーさんの親切心台無しだなww 0084NAME IS NULL2018/02/27(火) 20:04:14.37ID:??? 困ったら黙っちゃうSEさん達現実でも2ちゃんでも同じなんだね・・・・・ 0085NAME IS NULL2018/02/28(水) 08:09:46.03ID:???>>44 これでもいける select c1, case when count(*) = count(c2) then max(c2) else 0 end from t1 group by c1 order by c1 0086NAME IS NULL2018/02/28(水) 16:49:50.76ID:???>>85 そんな答え出てるものより60でも答えたれや 0087NAME IS NULL2018/02/28(水) 18:05:33.63ID:??? 60も答えでとるやん 0088NAME IS NULL2018/02/28(水) 19:44:20.59ID:F+U9w50n>>87 それではその答えを31文字以内で示しなさい。 0089NAME IS NULL2018/02/28(水) 19:49:58.19ID:???>>87 どこにでてんだよwwwwww あほかよSEさんwwwwww 0090NAME IS NULL2018/02/28(水) 22:18:01.64ID:??? 二人もおるんかww インターネッツの使い方も知らないんやなwwwププッ 0091NAME IS NULL2018/03/01(木) 07:11:43.52ID:??? 箇条書きの条件それぞれのsqlつくればいいのか? それなら簡単じゃね 0092NAME IS NULL2018/03/01(木) 07:52:43.33ID:RvibXfFY 簡単じゃねえ! 0093NAME IS NULL2018/03/01(木) 11:39:27.35ID:hRou4xtV これは「SQLの研修行け」の人が正解だったな 0094NAME IS NULL2018/03/01(木) 12:18:12.52ID:/b0teX7H>>93 バカはお口にチャックで 0095NAME IS NULL2018/03/01(木) 15:53:17.90ID:???>>92 どの辺が簡単じゃないの? 0096NAME IS NULL2018/03/01(木) 18:35:19.24ID:??? こんな簡単な SQLも教えられないとかゴミしかいないんだなここ そりゃ営業上がりに馬鹿にされるわけだわ 0097NAME IS NULL2018/03/01(木) 18:42:45.36ID:???>>96 簡単なSQLだからこそ 0098602018/03/01(木) 18:53:30.95ID:??? ほらこの答え出るまで 俺居座るからなはやくだせや 他のやつ質問すんなよこれが最優先だから 0099NAME IS NULL2018/03/01(木) 18:59:20.56ID:??? お前が質問してからのレスを全部読み返せよ、ゴミ 0100NAME IS NULL2018/03/01(木) 19:05:25.93ID:??? 簡単なSQLすら理解できない人に教えるとか無理ゲーやろ 0101NAME IS NULL2018/03/01(木) 19:22:33.99ID:RvibXfFY>>100 じゃあ誰に教えんだよw 0102NAME IS NULL2018/03/01(木) 19:58:10.36ID:???>>100 お前最高にアホだな 0103NAME IS NULL2018/03/01(木) 20:18:58.38ID:???>>101 >>102 お前ら池沼にSQL教えられんのか? 0104NAME IS NULL2018/03/01(木) 20:26:35.43ID:???>>58 Bを取り出すSQLを考える select b.* from b 存在する社員をだす exists (select 1 from a where a.名前=b.名前) 本来欲しいのは逆なんだから select b.* from b where not exists (select 1 from a where a.名前=b.名前) 0105NAME IS NULL2018/03/01(木) 20:45:45.55ID:??? かけ算も割り算も分かってないやつが 四角形と三角形の面積の求め方を教えろと質問してるのと同じ状況なんだよな
かけ算も割り算も分かってないってことが分かってないレベルなら かけ算がよくわからないので教えて下さいって言えるところまでは最低でも自力で勉強すべき 0106NAME IS NULL2018/03/01(木) 20:51:29.51ID:??? 例えが全然的を射てないんだよなあ かけ算と SQL同列に語って池沼に教えるのと同じってw お前の方がどうかと思うぞ 部下とか後輩から嫌われてない?w 0107NAME IS NULL2018/03/01(木) 21:01:35.54ID:???>>106 ガイジキタ━━━━(゚∀゚)━━━━!! 0108NAME IS NULL2018/03/01(木) 21:09:42.85ID:RvibXfFY 悩める教えたがりクン>>105 愛くるしいよぅ〜wwww 0109NAME IS NULL2018/03/01(木) 21:09:49.44ID:??? うわっ今どきキターとか使わないで 恥ずかしいから辞めた方がいいよ 0110602018/03/01(木) 21:11:32.00ID:???>>105 このスレ否定しちゃったよwwwwww アホかwwwwwwお前は2度とここ見なくていいからwwwwww現実で偉ぶってろやwwwwww みーんなおまえのこと嫌いだろうけどwwwwww 0111NAME IS NULL2018/03/01(木) 21:31:25.75ID:???>>109 キタ━━━━(゚∀゚)━━━━!! 0112NAME IS NULL2018/03/01(木) 21:31:45.96ID:???>>109 キタ━━━━(゚∀゚)━━━━!! 0113NAME IS NULL2018/03/01(木) 22:04:21.50ID:??? 内部結合/外部結合はかけ算/割り算レベル それが分からないから難しいと思っちゃうんだろね 0114NAME IS NULL2018/03/01(木) 22:08:38.92ID:??? なんで教えてくれたやつをまたスルーしてんの? 0115NAME IS NULL2018/03/01(木) 22:50:37.36ID:RvibXfFY>>114 どんだけお礼欲しがりなんだよw はいはいありがとうございましたwwww 0116NAME IS NULL2018/03/01(木) 22:51:54.37ID:RvibXfFY ちょっとまて誰だ教えてくれたやつって? 何嘘ついてんだよ騙されたじゃねえか 0117NAME IS NULL2018/03/02(金) 00:15:42.26ID:???>>115 そういうことじゃないだろw 0118NAME IS NULL2018/03/02(金) 00:19:18.61ID:??? リアルでよほど抑圧されてんだな ガンバレよ 0119602018/03/02(金) 20:44:32.05ID:???>>104 答えになってないが? あほ? 0120602018/03/02(金) 20:45:48.81ID:???>>118 PGSEさんは作業するだけだもんねー 大変だなあwww応援してるよ!頑張ってよ! 0121NAME IS NULL2018/03/02(金) 21:51:10.04ID:oDhTFYq0>>118 お前が頑張れよw 0122NAME IS NULL2018/03/02(金) 23:06:21.55ID:ThHddFfe SQL初心者スレ状態 0123602018/03/02(金) 23:08:56.75ID:???>>122 SQL初心者スレみたいな質問にもまともに答えられる奴が1人もいないってどうなん? 0124NAME IS NULL2018/03/02(金) 23:14:33.21ID:ThHddFfe>>123 データベース板は過疎板だから。いるのはインフラ屋ばかりでSQLはよくわからない。 0125NAME IS NULL2018/03/02(金) 23:27:14.54ID:??? 回答出てるのにレスが池沼だからスルーしてるだけだろ 012660 ◆YDp73vGOso3d 2018/03/02(金) 23:36:47.57ID:??? なんか俺のふりして頭おかしい人っぽく印象操作してるゴミSEがいるみたいだなトリップ付けとくわ 0127NAME IS NULL2018/03/02(金) 23:38:29.13ID:???>>126 で、回答はわかったの? 012860 ◆YDp73vGOso3d 2018/03/02(金) 23:40:48.89ID:???>>127 1つ目の質問はこれでできると思うが 2つ目の質問が答え出てないぞ 0129NAME IS NULL2018/03/03(土) 08:36:46.58ID:??? 104答えたの俺だけど60バカみたいで何も考える気が無いみたいなんで 2つ目答えようとおもったけどやめるわ 013060 ◆YDp73vGOso3d 2018/03/03(土) 11:26:10.35ID:??? 正直にできませんでしたってかけや 0131NAME IS NULL2018/03/03(土) 12:26:43.72ID:lRXd5Nnq 別にせんでもいいのに5ちゃんでまで出来ない言い訳をしてしまうバカ正直なバカかわゆすw 01321292018/03/03(土) 14:46:46.78ID:??? 教えてくださいっていったらおしえてあげる 013360 ◆YDp73vGOso3d 2018/03/03(土) 16:01:20.17ID:??? お前みたいななんの特徴も個性もないゴミSEが名前つけなくていいからね^ ^ 名無しに戻って2度と戻ってくんなよ^ ^