データベース詳しい人来て
■ このスレッドは過去ログ倉庫に格納されています
出走表っていうテーブルがあって下記のようになってる
名、点、着、競
あ、六、一、東1
い、六、二、東1
う、三、三、東1
え、七、一、東2
お、七、二、東2
か、二、三、東2
名=選手名
点=競走得点
着=着順
競=開催場+レースNO(東京1レースみたいな感じ)
こういうテーブルって主キーがないと思うんだけど、例えば東1Rの競走得点が一番高い人と2番目に高い人が六以上のレースを抽出することって可能? 誤記があった。
こういうテーブルって主キーがないと思うんだけど、例えば競走得点が一番高い人と2番目に高い人が六以上のレースを抽出することって可能? >>5
そう。
各レース毎に競争得点上位二人の点数が六以上の競を抽出したい 理解してもらえた?
これをchatgptにうまく伝えられない >>8
SELECT r1.競
FROM レース結果 r1
JOIN レース結果 r2 ON r1.競 = r2.競 AND r1.着 = '一' AND r2.着 = '二'
WHERE r1.点 >= 6 AND r2.点 >= 6 >>11
whereの二位が6点以上なら一位も六点以上なのは自明だけど1の要望通りにするとこうなる ごめんdistinctかgroup byしたほうがいいかも 競が主キーになってて一意の値になってるのが普通だと思うんだけど、こういう出走表テーブルの場合、競に同じレース名が入ってるじゃん?
こういう一意の値じゃないテーブルでも検索ってできるのかなって >>11
なんかすごい天才いるけど、その感じだとできそうだね? >>15
どのカラムにフィルターかけるの?
無理じゃない? >>16
group byで競が一意となる表をSELECTしてそれを結合すればいいじゃん >>19
ごめん意味がわからん
それするとどうなるの? >>21
SELECTすれば全部入りみたいなテーブルからでも仮想的にテーブル作れるからなんとでもなるってこと
もちろん正規化するのが最もやるべきことだけど select 競
from 出走表
where 点 >= 6
group by 競
having count(競) >= 2
とかそんな感じ? >>25
少なくとも
競と名が主キーのテーブルは作るべき >>28
chatgptも同じこと言ってたけどその主キーって確かに一意だけど、使い道あるの? >>23
>競=開催場+レースNO(東京1レースみたいな感じ)
1カラムに1つ以上の情報を入れてはならぬ教
という宗教があるんだ >>30
DB初心者だけど言ってることはなんとなくわかる
ただ、クエリでまとめるから結局一緒じゃない? >>31
この宗教では、運用上問題ないとか
使うか使わないかとかは関係ないんだ
なんならこのテーブルに直接
「東京」とか「府中」とかも書くのもダメで
別途、競馬場テーブル用意する
レースもレーステーブルを別途 >>32
正規化って極限まで分解するってことなの?
いや、わかるんだけど、それらをまた組み合わせて目的のデータとるの大変じゃない? データベースなんぞ使わずに表計算ソフトで余裕だろ…… >>33
正規化の特性としてオブジェクト化がある
正しく正規化できているものは元に戻せる
ただし正規化しすぎると目的のデータを見失いがちなので途中で止める場合もある 純粋に着が2かつ点が6以上のときのレース出せば良いだけじゃないの?? ■ このスレッドは過去ログ倉庫に格納されています