X



トップページDB@2ch掲示板
1002コメント319KB
SQL質疑応答スレ 18問目
■ このスレッドは過去ログ倉庫に格納されています
0001NAME IS NULL
垢版 |
2018/01/04(木) 22:12:22.14ID:???
このスレは
「こういうことをやりたいんだけどSQLでどう書くの?」
「こういうSQLを書いたんだけどうまく動きません><」
などの質問を受け付けるスレです。

SQLという言語はISOによって標準化されていますが
この標準を100%実装したDBMSは存在せず、
また、DBMSによっては標準でない独自の構文が
追加されていることもあります。

質問するときはDBMS名を必ず付記してください。

【質問テンプレ】
・DBMS名とバージョン
・テーブルデータ
・欲しい結果
・説明

前スレ:
SQL質疑応答スレ 17問目
https://mevius.5ch.net/test/read.cgi/db/1468157341/
0034NAME IS NULL
垢版 |
2018/02/04(日) 15:29:21.67ID:gIv0OydZ
訂正

「結果」
3 | ccc | 6    | c_key1
4 | ddd | NULL | NULL
0035NAME IS NULL
垢版 |
2018/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 NULL
垢版 |
2018/02/04(日) 17:38:30.70ID:gIv0OydZ
>>35
ありがとうございます
使用しているのはMariaDB 10.1でしたが(書き忘れ失礼しました)、頂いた解答をヒントに試してみます
0038NAME IS NULL
垢版 |
2018/02/04(日) 18:33:52.86ID:gIv0OydZ
>>37
こちらもちょうどそこに行き着いてました
バージョンを上げることは可能なので最新版にアップデートして試してみようと思います
わざわざ調べて頂き感謝します
0039NAME IS NULL
垢版 |
2018/02/14(水) 13:22:57.02ID:???
☆ 日本の、改憲をしましょう。現在、衆議員と参議院の両院で、
改憲議員が3分の2を超えております。『憲法改正国民投票法』、
でググってみてください。国会の発議はすでに可能です。
平和は勝ち取るものです。お願い致します。☆☆
0040NAME IS NULL
垢版 |
2018/02/15(木) 23:04:18.91ID:???
SQLがなかなか覚えられません
SELECT が先頭に来るのは覚えていますが、
次がFROMか、WHEREか迷ったりします
なにか覚えやすい方法ってありますか?
0042NAME IS NULL
垢版 |
2018/02/16(金) 00:34:33.15ID:???
>>40
順番はきっちり決まってるから覚えれば迷うことはない
それすら覚えられないならマやめた方がいい
0044NAME IS NULL
垢版 |
2018/02/22(木) 17:16:09.65ID:???
集計で、nullがあれば0で、nullが1つもない場合は最大値や最小値を取ってくるような書き方ってないでしょうか?
0045NAME IS NULL
垢版 |
2018/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 NULL
垢版 |
2018/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 NULL
垢版 |
2018/02/23(金) 10:11:31.58ID:???
>>45 >>46
ありがとうございます!
後者の方が問い合わせが少ない感じで良さそうですね。
0048NAME IS NULL
垢版 |
2018/02/23(金) 21:55:14.87ID:0la0B0YA
uelect文を2つ書いてunion allの方がよっぽど可読性が高い。
0049NAME IS NULL
垢版 |
2018/02/23(金) 22:08:01.48ID:KWaEL2bi
union言いたすぎてuelectになっちゃう奴カワユスw
0050NAME IS NULL
垢版 |
2018/02/23(金) 23:22:19.25ID:???
>>48
その可読性が高いやつ提示しなよ
0053NAME IS NULL
垢版 |
2018/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 NULL
垢版 |
2018/02/24(土) 20:27:08.92ID:pUuArQ+S
uelectになるのにビビってセレクトになっちゃう奴カワユスw
0055NAME IS NULL
垢版 |
2018/02/24(土) 20:41:54.02ID:???
いつもSQL書かずに意味不明なイチャモンだけつけてた人が
珍しくSQL書いたと思ったらやっぱり意味不明なSQLじゃんか
havingの意味分かってないんだろうな
0056NAME IS NULL
垢版 |
2018/02/24(土) 20:54:00.99ID:pUuArQ+S
>>55
おい勘違いするな
いつも意味不明なイチャモンつけてるアゲは俺だ
アゲだからといってバカと一緒にされては困るなw
0057NAME IS NULL
垢版 |
2018/02/25(日) 00:08:49.03ID:???
union all期待してたのに。。。こんな結果なの??

>>45のやつはCASE WHEN EXISTSにしたほうがよかったね
0058NAME IS NULL
垢版 |
2018/02/25(日) 03:10:53.80ID:???
SEなんだが殆ど要件定義とか折衝が主担当だから
SQLの知識があんまりなくていつも効率悪い調査の仕方だったりベンダーさんに投げてしまったりになってしまうんで質問させてください
使用しているのはoracle SQLです。
下みたいなAテーブル、Bマスタがあって
Aテーブル(トラン)
no 名前 上長名前 日付

Bマスタ
名前 社員番号 適用開始日 適用終了日

【抜き出したい情報】
・Aテーブルに1つもない(名前、上長名前)人員の情報(Bマスタの名前、社員番号)
・Aテーブルの名前、上長名前に1以上トランが発生している人員情報、発生件数(名前、上長名前で分ける)

を抽出したい場合はどうすればよいでしょうか?
実業務ではベンダーさんからの報告で解決したのですが次からは自分でも頑張ってみたくて勉強したのですが実際に書こうと思うと全く上手くいきませんOTL
0059NAME IS NULL
垢版 |
2018/02/25(日) 03:25:04.65ID:???
>>58
とりあえず自分の思うように書いてみ
0060NAME IS NULL
垢版 |
2018/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.適用終了日
 
ってとこまで書いて挫折してしまいました・・・・・
COUNT、EXISTSを使えばよさそうだなとは思うのですがどうでしょう?
ちなみに2つ目のはまったく見当もつかない状況です・・・・

元は営業職で今期から情報部に異動してきて勉強はしてるのですがまったくわかりません・・・
本職SEの方の文の書き方の考え方のコツなんかも教えていただけるとうれしいです
0061NAME IS NULL
垢版 |
2018/02/25(日) 15:25:45.40ID:EdN+hOz0
>>55
having に集計関数と書かずにカラム名と書いたら、見事にそこだけ問題視するんだな。

セレクトと書いているのもSQLインジェクション対策に引っかかるため。
0062NAME IS NULL
垢版 |
2018/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 NULL
垢版 |
2018/02/25(日) 15:29:20.92ID:EdN+hOz0
曖昧質問に対して勝手な想像で要件を決めつけて答えるのはよくない。

そもそもSQLをずばり教えてくれというのが間違い。
0064NAME IS NULL
垢版 |
2018/02/25(日) 15:31:10.48ID:EdN+hOz0
>>57
select句にselect文を書くのを推奨するな。
0065NAME IS NULL
垢版 |
2018/02/25(日) 15:37:06.31ID:EdN+hOz0
>>60
あなたが書いているとおりに書けばよい。

なぜ一つのSQLでいきなりやろうとするのか?
0066NAME IS NULL
垢版 |
2018/02/25(日) 15:39:24.08ID:EdN+hOz0
>>60
3パターンの整理をせよ。
0067NAME IS NULL
垢版 |
2018/02/25(日) 15:44:37.91ID:EdN+hOz0
>>60
それあなたのいう1つ目もできていない。
少なくともそのSQLにこだわりがあるのなら、内部結合ではなく外部結合しなければ、1つ目も達成できていない。
0070NAME IS NULL
垢版 |
2018/02/25(日) 17:49:37.39ID:fHMtmeQ2
順当にバカが発狂しとるなw
0071NAME IS NULL
垢版 |
2018/02/25(日) 18:35:17.10ID:???
>>60
1. SQLの研修を受ける
2. 最小限のテストデータを作成して試行錯誤を繰り返す
3. 少し高度なクエリをWebや書籍で学ぶ

まず1と2をやること(>>58のやつはSQLの研修を受講すれば解決できるレベル)
基本的なクエリは問題なく出来るようになってから3に進む
3はミックのブログやセルコの本がおすすめ
0072NAME IS NULL
垢版 |
2018/02/25(日) 18:36:47.80ID:???
あと要件定義が主な担当なら
SQLの書き方よりもDB設計を学んだほうが役立つ度合いが大きいよ
0074NAME IS NULL
垢版 |
2018/02/26(月) 00:51:55.29ID:???
>>71
SQLの受講は予定してるけど・・・
ここってそういうの教えてくれる板じゃないの?
勉強法なんて聞いてないんだが
0075NAME IS NULL
垢版 |
2018/02/26(月) 02:37:26.99ID:???
こいつはクズだね〜w
営業をお払い箱になって情シスでもお荷物だな
0076NAME IS NULL
垢版 |
2018/02/26(月) 02:57:29.29ID:???
簡単に解決できるレベルとかいって勉強法講釈たれる奴もどうかと思うがな
0077NAME IS NULL
垢版 |
2018/02/26(月) 14:57:52.44ID:???
>ベンダーさんに投げてしまったりになってしまうんで
とか言ってるやつがこのスレに投げるだけになるんだぜ
鬱陶しいだろ
0078NAME IS NULL
垢版 |
2018/02/26(月) 16:34:56.99ID:???
問題を解くコツを教えてもらおうとする前に基礎を学べってことだろ
内部結合や外部結合は算数で言えば四則演算レベルの基礎なんだからさ
0079NAME IS NULL
垢版 |
2018/02/26(月) 19:15:23.41ID:k450wkRK
教えたがりのくせに質問には答えたくないてどないやねんw
そのややこしい承認欲求どうにかしろやw
0080NAME IS NULL
垢版 |
2018/02/26(月) 20:28:10.94ID:???
>>60だけど
やっぱりSEって気持ち悪いな
ベンダー嬲り倒すことにしたわ
てか早く答えろやwwwPGしかできないアホなんだからこれくらいすぐ答えだせwwwwww
0082NAME IS NULL
垢版 |
2018/02/26(月) 20:59:21.87ID:???
>>81
どこが出てるんだよwwwwww
やっぱSEって頭おかしいのしかいないのなwwwwww
0083NAME IS NULL
垢版 |
2018/02/26(月) 21:13:20.39ID:???
おまえマジかww
回答してくれた気持ち悪いエス・イーさんの親切心台無しだなww
0084NAME IS NULL
垢版 |
2018/02/27(火) 20:04:14.37ID:???
困ったら黙っちゃうSEさん達現実でも2ちゃんでも同じなんだね・・・・・
0085NAME IS NULL
垢版 |
2018/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 NULL
垢版 |
2018/02/28(水) 16:49:50.76ID:???
>>85
そんな答え出てるものより60でも答えたれや
0087NAME IS NULL
垢版 |
2018/02/28(水) 18:05:33.63ID:???
60も答えでとるやん
0088NAME IS NULL
垢版 |
2018/02/28(水) 19:44:20.59ID:F+U9w50n
>>87
それではその答えを31文字以内で示しなさい。
0089NAME IS NULL
垢版 |
2018/02/28(水) 19:49:58.19ID:???
>>87
どこにでてんだよwwwwww
あほかよSEさんwwwwww
0090NAME IS NULL
垢版 |
2018/02/28(水) 22:18:01.64ID:???
二人もおるんかww
インターネッツの使い方も知らないんやなwwwププッ
0091NAME IS NULL
垢版 |
2018/03/01(木) 07:11:43.52ID:???
箇条書きの条件それぞれのsqlつくればいいのか?
それなら簡単じゃね
0092NAME IS NULL
垢版 |
2018/03/01(木) 07:52:43.33ID:RvibXfFY
簡単じゃねえ!
0093NAME IS NULL
垢版 |
2018/03/01(木) 11:39:27.35ID:hRou4xtV
これは「SQLの研修行け」の人が正解だったな
0094NAME IS NULL
垢版 |
2018/03/01(木) 12:18:12.52ID:/b0teX7H
>>93
バカはお口にチャックで
0096NAME IS NULL
垢版 |
2018/03/01(木) 18:35:19.24ID:???
こんな簡単な SQLも教えられないとかゴミしかいないんだなここ
そりゃ営業上がりに馬鹿にされるわけだわ
009860
垢版 |
2018/03/01(木) 18:53:30.95ID:???
ほらこの答え出るまで
俺居座るからなはやくだせや
他のやつ質問すんなよこれが最優先だから
0099NAME IS NULL
垢版 |
2018/03/01(木) 18:59:20.56ID:???
お前が質問してからのレスを全部読み返せよ、ゴミ
0100NAME IS NULL
垢版 |
2018/03/01(木) 19:05:25.93ID:???
簡単なSQLすら理解できない人に教えるとか無理ゲーやろ
0101NAME IS NULL
垢版 |
2018/03/01(木) 19:22:33.99ID:RvibXfFY
>>100
じゃあ誰に教えんだよw
0104NAME IS NULL
垢版 |
2018/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 NULL
垢版 |
2018/03/01(木) 20:45:45.55ID:???
かけ算も割り算も分かってないやつが
四角形と三角形の面積の求め方を教えろと質問してるのと同じ状況なんだよな

かけ算も割り算も分かってないってことが分かってないレベルなら
かけ算がよくわからないので教えて下さいって言えるところまでは最低でも自力で勉強すべき
0106NAME IS NULL
垢版 |
2018/03/01(木) 20:51:29.51ID:???
例えが全然的を射てないんだよなあ
かけ算と SQL同列に語って池沼に教えるのと同じってw
お前の方がどうかと思うぞ 部下とか後輩から嫌われてない?w
0107NAME IS NULL
垢版 |
2018/03/01(木) 21:01:35.54ID:???
>>106
ガイジキタ━━━━(゚∀゚)━━━━!!
0108NAME IS NULL
垢版 |
2018/03/01(木) 21:09:42.85ID:RvibXfFY
悩める教えたがりクン>>105
愛くるしいよぅ〜wwww
0109NAME IS NULL
垢版 |
2018/03/01(木) 21:09:49.44ID:???
うわっ今どきキターとか使わないで
恥ずかしいから辞めた方がいいよ
011060
垢版 |
2018/03/01(木) 21:11:32.00ID:???
>>105
このスレ否定しちゃったよwwwwww
アホかwwwwwwお前は2度とここ見なくていいからwwwwww現実で偉ぶってろやwwwwww
みーんなおまえのこと嫌いだろうけどwwwwww
0111NAME IS NULL
垢版 |
2018/03/01(木) 21:31:25.75ID:???
>>109
キタ━━━━(゚∀゚)━━━━!!
0112NAME IS NULL
垢版 |
2018/03/01(木) 21:31:45.96ID:???
>>109
キタ━━━━(゚∀゚)━━━━!!
0113NAME IS NULL
垢版 |
2018/03/01(木) 22:04:21.50ID:???
内部結合/外部結合はかけ算/割り算レベル
それが分からないから難しいと思っちゃうんだろね
0114NAME IS NULL
垢版 |
2018/03/01(木) 22:08:38.92ID:???
なんで教えてくれたやつをまたスルーしてんの?
0115NAME IS NULL
垢版 |
2018/03/01(木) 22:50:37.36ID:RvibXfFY
>>114
どんだけお礼欲しがりなんだよw
はいはいありがとうございましたwwww
0116NAME IS NULL
垢版 |
2018/03/01(木) 22:51:54.37ID:RvibXfFY
ちょっとまて誰だ教えてくれたやつって?
何嘘ついてんだよ騙されたじゃねえか
0118NAME IS NULL
垢版 |
2018/03/02(金) 00:19:18.61ID:???
リアルでよほど抑圧されてんだな
ガンバレよ
011960
垢版 |
2018/03/02(金) 20:44:32.05ID:???
>>104
答えになってないが?
あほ?
012060
垢版 |
2018/03/02(金) 20:45:48.81ID:???
>>118
PGSEさんは作業するだけだもんねー
大変だなあwww応援してるよ!頑張ってよ!
0121NAME IS NULL
垢版 |
2018/03/02(金) 21:51:10.04ID:oDhTFYq0
>>118
お前が頑張れよw
0122NAME IS NULL
垢版 |
2018/03/02(金) 23:06:21.55ID:ThHddFfe
SQL初心者スレ状態
012360
垢版 |
2018/03/02(金) 23:08:56.75ID:???
>>122
SQL初心者スレみたいな質問にもまともに答えられる奴が1人もいないってどうなん?
0124NAME IS NULL
垢版 |
2018/03/02(金) 23:14:33.21ID:ThHddFfe
>>123
データベース板は過疎板だから。いるのはインフラ屋ばかりでSQLはよくわからない。
0125NAME IS NULL
垢版 |
2018/03/02(金) 23:27:14.54ID:???
回答出てるのにレスが池沼だからスルーしてるだけだろ
012660 ◆YDp73vGOso3d
垢版 |
2018/03/02(金) 23:36:47.57ID:???
なんか俺のふりして頭おかしい人っぽく印象操作してるゴミSEがいるみたいだなトリップ付けとくわ
012860 ◆YDp73vGOso3d
垢版 |
2018/03/02(金) 23:40:48.89ID:???
>>127
1つ目の質問はこれでできると思うが
2つ目の質問が答え出てないぞ
0129NAME IS NULL
垢版 |
2018/03/03(土) 08:36:46.58ID:???
104答えたの俺だけど60バカみたいで何も考える気が無いみたいなんで
2つ目答えようとおもったけどやめるわ
0131NAME IS NULL
垢版 |
2018/03/03(土) 12:26:43.72ID:lRXd5Nnq
別にせんでもいいのに5ちゃんでまで出来ない言い訳をしてしまうバカ正直なバカかわゆすw
0132129
垢版 |
2018/03/03(土) 14:46:46.78ID:???
教えてくださいっていったらおしえてあげる
013360 ◆YDp73vGOso3d
垢版 |
2018/03/03(土) 16:01:20.17ID:???
お前みたいななんの特徴も個性もないゴミSEが名前つけなくていいからね^ ^
名無しに戻って2度と戻ってくんなよ^ ^
■ このスレッドは過去ログ倉庫に格納されています

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