おはこんばんちわ。また学校じゃ習わない使い方してるテーブルを見た管理人・なぎです。
先日、主キーが存在しないテーブルを取り上げましたが、あれも相当悩んだもんだ。
今回も似たような出来事に出くわしまして・・・というか、前回以上にヘンテコな仕様。
まぁ1つのテーブルがあるわけですよ。列は、そうだねぇ、『種類』『コード』『名称』って感じで。
お分かりいただけるだろうか。名称の部分、一つの列に色んな種類の値を入れてるのよ。
それを種類とコードで分けて管理しているらしいんですが・・・何故こんな無駄なことをw
種類『6』ってのが恐らく区切りに入れてるだけの行。完全に意味を成さない行ってことで。
コードで統一して、コードの『2』は全て姉御の情報・・・とかそういう分けでもなくバラバラで。
何もこんなことしなくても、種類別にそれぞれ違うテーブル作ればいいのにと思った。
まぁ表参照の処理速度の関係があるのだろうかどうなんだろうか、よく分からないですが。
とりあえずここから、姉御の情報をSELECTで持ってきて1行に表示するってことをしたくて。
面倒だけど、その数分の表別名を付けた同じ表を参照して引っ張ることになりました。
つまり、この表は変わらず、その表を『A表』『B表』『C表』って感じで名前分けして3つ参照し、
A表は種類『1』の条件付け、B表は種類『2』、C表は『3』・・・って感じで条件付けていって。
それでA表とB表とC表の名称をそれぞれ持ってきたら・・・はいちゃんとできましたって具合で。
最初今までみたこともない表でとまどったけど、SQL自体は30分前後で書くことができた。
あと、既存のSQL文修正で、BETWEEN条件の使い方ってのもまた見たことない条件付けが。
大抵BETWEENって『WHERE 列名 BETWEEN こっから AND ここまで』って感じで記述して、
その列の値がこっからここまでの範囲内にあるものを摘出するって今まで習ってたんですが。
『WHERE 値 BETWEEN こっから AND ここまで』って条件付けでも記述できることを知った。
そうしたら、わざわざ列から引っ張ってくるのではなく、もうその値固定で範囲抽出するらしく。
教科書にも載ってなければググってもなかなか出てこないという隠れたコマンドでござい。
今日一日通して、SQLはやっぱり奥が深いんだってことを思い知らされました。
なんつーか、習ったこと以外の発想を常に持ってなきゃいけないんだろうね。
習ったことしかできないのではなく、これはできるのかって意識で臨むように。
コメント
壁|A ・)列として扱われてるんだね値…
あれには色々驚かされた