2ちゃんねる ■掲示板に戻る■ 全部 1- 最新50    

■ このスレッドは過去ログ倉庫に格納されています

SQLマンちょっと来てー

1 :以下、?ちゃんねるからVIPがお送りします:2018/01/22(月) 19:45:01.564 ID:LLrwr37gr.net
以下の項目がある社員テーブルがあります。
シーケンス、社員ID、社員姓、社員名、年齢
主キーがシーケンスで、1つの社員IDに複数の年齢があるテーブル構造です。

この時、社員ID毎の最大の年齢のレコードってどうやって取得したら良い?

初心者なので煽りなしでお願いします

2 :以下、?ちゃんねるからVIPがお送りします:2018/01/22(月) 19:46:59.760 ID:S6GS4Q4i0.net
max使え

3 :以下、?ちゃんねるからVIPがお送りします:2018/01/22(月) 19:49:21.949 ID:PpSnEvRP0.net
groupしてmaxかね
てか変なテーブルだな

4 :以下、?ちゃんねるからVIPがお送りします:2018/01/22(月) 19:51:49.298 ID:MvKyUVxcd.net
せれくと ID、まっくす(年齢) ふろむ テーブルめい
ぐるーぷ ばい ID

5 :以下、?ちゃんねるからVIPがお送りします:2018/01/22(月) 19:52:49.905 ID:MvKyUVxcd.net
>>3
Access辺りを使った学生向け教材にありそうだよね・・

6 :以下、?ちゃんねるからVIPがお送りします:2018/01/22(月) 19:53:05.056 ID:5QzbOd2H0.net
SELECT 社員ID, MAX(年齢) AS max_age
FROM その変なテーブル
GROUP BY 社員ID

7 :以下、?ちゃんねるからVIPがお送りします:2018/01/22(月) 19:53:22.154 ID:LLrwr37gr.net
>>3
例で挙げたから凄い変なテーブルになってしまった

サブクエリとかgroupで行けるとは思うんだけど、よくわからん…

8 :以下、?ちゃんねるからVIPがお送りします:2018/01/22(月) 19:53:52.896 ID:M0LyxrdF0.net
テーブル総ナメで何がしたいのか分からない設計だな

9 :以下、?ちゃんねるからVIPがお送りします:2018/01/22(月) 19:54:19.173 ID:LLrwr37gr.net
>>4
>>6
欲しいのは全項目なんだ…

10 :以下、?ちゃんねるからVIPがお送りします:2018/01/22(月) 19:55:44.431 ID:5QzbOd2H0.net
>>9
んじゃ、社員ID, MAX(年齢) だけじゃなくて全項目入れりゃいいんじゃね

11 :以下、?ちゃんねるからVIPがお送りします:2018/01/22(月) 19:58:11.361 ID:MvKyUVxcd.net
簡単だが正直スマホで打つのは辛い

12 :以下、?ちゃんねるからVIPがお送りします:2018/01/22(月) 19:58:36.237 ID:JzVCNobda.net
select
*,
(select max (とし) from テーブル where あいでー=あいでー)
from テーブル

13 :以下、?ちゃんねるからVIPがお送りします:2018/01/22(月) 20:01:41.851 ID:LLrwr37gr.net
>>11
考え方だけでも教えて欲しい

14 :以下、?ちゃんねるからVIPがお送りします:2018/01/22(月) 20:01:44.358 ID:MvKyUVxcd.net
手っ取り早くは
せれくと a.*、b.まっくすーえいじ
ふろむ
社員テーブル a
,
(
>>6
) b
ほえあー
a.ID=b.ID

汚くても良いならこれで

15 :以下、?ちゃんねるからVIPがお送りします:2018/01/22(月) 20:02:20.901 ID:MvKyUVxcd.net
>>12の方が綺麗だね

16 :以下、?ちゃんねるからVIPがお送りします:2018/01/22(月) 20:03:18.692 ID:LLrwr37gr.net
>>10
実際にはもっと項目あるから全項目でgroup化は出来ないんだよね…

17 :以下、?ちゃんねるからVIPがお送りします:2018/01/22(月) 20:04:57.059 ID:5QzbOd2H0.net
>>16
なら他の人が書いてるみたいに *使えばいいじゃない!!

18 :以下、?ちゃんねるからVIPがお送りします:2018/01/22(月) 20:04:59.416 ID:JzVCNobda.net
-- ちょうふくいやならですてぃんくとする
select distinct
*,
(select max (とし) from テーブル where あいでー=あいでー)
from テーブル

19 :以下、?ちゃんねるからVIPがお送りします:2018/01/22(月) 20:05:54.394 ID:LLrwr37gr.net
>>17
怒らないで…

20 :以下、?ちゃんねるからVIPがお送りします:2018/01/22(月) 20:06:38.119 ID:MvKyUVxcd.net
つーか、これは何?
学校かなんかの宿題か?

21 :以下、?ちゃんねるからVIPがお送りします:2018/01/22(月) 20:10:54.308 ID:LLrwr37gr.net
年齢を変更履歴番号とかにしたらわかりやすいかな
社員情報に変更があるときは行追加していく感じ
変更履歴が各社員IDで最大のレコードの一覧を取得したい

22 :以下、?ちゃんねるからVIPがお送りします:2018/01/22(月) 20:13:25.195 ID:LLrwr37gr.net
>>20
今SQL2回投げて実現してることを1発に纏めたいなって

23 :以下、?ちゃんねるからVIPがお送りします:2018/01/22(月) 20:15:53.336 ID:3JF63GPB0.net
mysqlで開いてレコード全部みて一番高い数値を手書き

24 :以下、?ちゃんねるからVIPがお送りします:2018/01/22(月) 20:16:48.177 ID:LLrwr37gr.net
>>18
後だしになるけど、select句は共有のがあるから、from句以降でやりたい

25 :以下、?ちゃんねるからVIPがお送りします:2018/01/22(月) 20:17:04.118 ID:JzVCNobda.net
-- ぼく末rキライ
select * from テーブル
where シーケンス=(
select シーケンス from テーブル
where あいでー=あいでー
order by とし desc limit 1)

26 :以下、?ちゃんねるからVIPがお送りします:2018/01/22(月) 20:21:04.146 ID:jfKprSjhd.net
>>22
うーーーーーーーん????
仕事じゃないよね?

27 :以下、?ちゃんねるからVIPがお送りします:2018/01/22(月) 20:21:22.873 ID:LLrwr37gr.net
>>25
末尾r嫌いなのにありがとう
それって1レコードしか取れなくないですか?

あと末尾rってなにの証?

28 :以下、?ちゃんねるからVIPがお送りします:2018/01/22(月) 20:23:13.270 ID:LLrwr37gr.net
>>26
研修!
諦めて2回に分けたんだけど、やっぱり悔しいから1発でやりたい

29 :以下、?ちゃんねるからVIPがお送りします:2018/01/22(月) 20:29:09.567 ID:jfKprSjhd.net
>>28
自分でやれよ・・

30 :以下、?ちゃんねるからVIPがお送りします:2018/01/22(月) 20:32:15.710 ID:RFy+M/BU0.net
主キーがシーケンスってキモいな

31 :以下、?ちゃんねるからVIPがお送りします:2018/01/22(月) 20:33:20.864 ID:RFy+M/BU0.net
データ横持ちのテーブル嫌い

32 :以下、?ちゃんねるからVIPがお送りします:2018/01/22(月) 20:34:12.461 ID:RFy+M/BU0.net
良く見たら横もちじゃなかったすまん

33 :以下、?ちゃんねるからVIPがお送りします:2018/01/22(月) 20:35:19.443 ID:LLrwr37gr.net
>>29
答えじゃなくても、考え方とかヒントが欲しい…

34 :以下、?ちゃんねるからVIPがお送りします:2018/01/22(月) 20:36:33.903 ID:LLrwr37gr.net
>>30
シーケンスは適当なんだ
社員IDは主キーじゃないよって為だけに入れた

35 :以下、?ちゃんねるからVIPがお送りします:2018/01/22(月) 20:36:39.949 ID:RFy+M/BU0.net
>>33
group byとサブクエリ使え

36 :以下、?ちゃんねるからVIPがお送りします:2018/01/22(月) 20:38:50.038 ID:JzVCNobda.net
そうかんさぶくえりは条件に合致する全ての行毎にくえりがはっこうされます
今回は条件が無いのですべての行で(select シーケンス from テーブル where あいでー=あいでー order by とし desc limit 1)が計算され条件判定され最終的な結果に含むかが決まります

37 :以下、?ちゃんねるからVIPがお送りします:2018/01/22(月) 20:39:37.616 ID:RFy+M/BU0.net
>>34
ちょっとテーブル構造軽く書いてよ
そしたらsql組んでやるよ

38 :以下、?ちゃんねるからVIPがお送りします:2018/01/22(月) 20:41:15.061 ID:LLrwr37gr.net
>>35
そこまではわかる
select 社員ID,max(更新履歴番号)
from 社員
group by 社員ID
↑このサブクエリは絶対必要だと思うんだけど、どこで使ったらいいのかわからん

39 :以下、?ちゃんねるからVIPがお送りします:2018/01/22(月) 20:42:05.381 ID:jfKprSjhd.net
いや、もう答え出てるからね?
これでまだダメなら足を洗った方が良いよ

40 :以下、?ちゃんねるからVIPがお送りします:2018/01/22(月) 20:47:45.538 ID:LLrwr37gr.net
>>37
社員テーブル
社員ID,所属部署コード,権限,社員姓,社員名,変更履歴番号

社員情報の変更はupdateじゃなくてinsertで実施する。
最大の変更履歴番号を持つレコードが最新の社員情報。
社員ID毎の最大更新履歴番号のレコード一覧を取得したい。
select句は全項目指定のものがあって触れない、from句以降で実現したい。

まとめるとこんな感じ

41 :以下、?ちゃんねるからVIPがお送りします:2018/01/22(月) 20:48:40.510 ID:LLrwr37gr.net
>>39
やっぱセンスないよな
自分でも思う

42 :以下、?ちゃんねるからVIPがお送りします:2018/01/22(月) 20:51:54.021 ID:RFy+M/BU0.net
select ※
from
社員情報 a
where
a.年齢 = (select
,max(年齢)
from
社員情報
group by 社員コード
)

こんなんじゃだめか
いっつも流しながら組むから空だとむずいな

43 :以下、?ちゃんねるからVIPがお送りします:2018/01/22(月) 20:56:40.551 ID:JzVCNobda.net
>>42
おんなじねんれいの別社員で死ぬ

44 :以下、?ちゃんねるからVIPがお送りします:2018/01/22(月) 20:57:16.139 ID:LLrwr37gr.net
>>42
社員情報テーブルにある最大の更新履歴番号のレコードが取得されるSQLに見えるけど、俺の勘違い?

45 :以下、?ちゃんねるからVIPがお送りします:2018/01/22(月) 20:57:44.063 ID:RFy+M/BU0.net
>>40
聞いといてテーブル情報シカトで組んじまった
そしたら取りたいのmaxの年齢じゃなくね

46 :以下、?ちゃんねるからVIPがお送りします:2018/01/22(月) 20:59:37.664 ID:RFy+M/BU0.net
>>43
たしかに死ぬなw
だめだテーブルとsql組める環境じゃないと組めねえ

47 :以下、?ちゃんねるからVIPがお送りします:2018/01/22(月) 20:59:42.412 ID:LLrwr37gr.net
>>36
相関サブクエリ?初めて聞いた
調べてみる

48 :以下、?ちゃんねるからVIPがお送りします:2018/01/22(月) 21:01:11.121 ID:LLrwr37gr.net
>>45
各社員IDの最大の更新履歴のレコードの一覧を取得したい

49 :以下、?ちゃんねるからVIPがお送りします:2018/01/22(月) 21:01:55.359 ID:JzVCNobda.net
>>46
良く見たらその前にinじゃなくて=だからさぶくえりが複数行返して死ぬ

50 :以下、?ちゃんねるからVIPがお送りします:2018/01/22(月) 21:03:05.471 ID:RFy+M/BU0.net
>>49
ほんとだw

51 :以下、?ちゃんねるからVIPがお送りします:2018/01/22(月) 21:04:10.461 ID:RFy+M/BU0.net
オブブラあれば一発で組めるのに
いっつも文明の利器に頼りすぎなんだな

52 :以下、?ちゃんねるからVIPがお送りします:2018/01/22(月) 21:09:17.610 ID:LLrwr37gr.net
>>51
SQLデベロッパーって使いやすい方?

53 :以下、?ちゃんねるからVIPがお送りします:2018/01/22(月) 21:11:38.862 ID:RFy+M/BU0.net
>>52
デベロッパーは使いやすいね
PLSQLとかあれないと組む気しない

54 :以下、?ちゃんねるからVIPがお送りします:2018/01/22(月) 21:17:35.424 ID:LLrwr37gr.net
>>53
やっぱそうなのか
pgadminめっちゃストレス貯まる

55 :以下、?ちゃんねるからVIPがお送りします:2018/01/22(月) 21:19:24.125 ID:RFy+M/BU0.net
>>54
デベロッパー使えばいいじゃん?
あれフリーでしょたしか

56 :以下、?ちゃんねるからVIPがお送りします:2018/01/22(月) 21:20:44.066 ID:LLrwr37gr.net
>>55
あれoracle以外で使えるのん?
あとSQLはもうわからん?

57 :以下、?ちゃんねるからVIPがお送りします:2018/01/22(月) 22:10:00.866 ID:jfKprSjhd.net
まだやってんのかよ

58 :以下、?ちゃんねるからVIPがお送りします:2018/01/22(月) 23:10:58.334 ID:bkp9uy400.net
恐い

59 :以下、?ちゃんねるからVIPがお送りします:2018/01/23(火) 00:10:47.007 ID:HcqMzEOe0.net
ばか

60 :以下、?ちゃんねるからVIPがお送りします:2018/01/23(火) 01:10:45.782 ID:PR5mPfE20.net
それ

61 :以下、?ちゃんねるからVIPがお送りします:2018/01/23(火) 02:10:13.012 ID:x+W6Bb0O0.net
ぬるぽ

62 :以下、?ちゃんねるからVIPがお送りします:2018/01/23(火) 03:10:13.048 ID:PR5mPfE20.net
すまん

63 :以下、?ちゃんねるからVIPがお送りします:2018/01/23(火) 04:10:18.244 ID:OPDD39Zm0.net
たしかに

64 :以下、?ちゃんねるからVIPがお送りします:2018/01/23(火) 05:10:25.477 ID:PR5mPfE20.net
おやすみ

65 :以下、?ちゃんねるからVIPがお送りします:2018/01/23(火) 06:10:05.948 ID:79zVqJrj0.net
それで?

66 :以下、?ちゃんねるからVIPがお送りします:2018/01/23(火) 07:10:08.041 ID:79zVqJrj0.net
それで?

67 :以下、?ちゃんねるからVIPがお送りします:2018/01/23(火) 08:10:19.770 ID:oB4+lRnw0.net
こわいよ

68 :以下、?ちゃんねるからVIPがお送りします:2018/01/23(火) 09:10:18.333 ID:79zVqJrj0.net
何それ

69 :以下、?ちゃんねるからVIPがお送りします:2018/01/23(火) 10:10:20.228 ID:SHB2Juwl0.net
またか?

70 :以下、?ちゃんねるからVIPがお送りします:2018/01/23(火) 11:10:11.346 ID:wmWUKpia0.net
しねば?

総レス数 70
15 KB
掲示板に戻る 全部 前100 次100 最新50
read.cgi ver 2014.07.20.01.SC 2014/07/20 D ★