2つのテーブル(basecodeとaddcode)からVIEWを作りたいのですが、
そのVIEWについてご教授いただきたく。
<TABLE名:basecode>
----------------------
no name area code
----------------------
1 aaaa 2 102
2 bbbb 4 103
3 cccc 4 203
4 gggg 3 303
5 eeee 3 101
6 ffff 5 104
7 hhhh 1 115
----------------------
<TABLE名:addcode>
-----------------------------------------
base anum bnum cnum dnum dmy no
-----------------------------------------
bbbb 1 1 1 1 aaa 2
cccc 12 13 10 2 aaa 3
cccc 12 13 10 0 aaa 3
cccc 12 13 10 5 aaa 3
dddd 12 15 3 1 aaa 3
dddd 12 15 3 3 aaa 3
dddd 12 15 3 4 aaa 3
eeee 10 3 12 1 aaa 5
eeee 10 3 12 2 aaa 5
eeee 10 3 12 3 aaa 5
eeee 10 3 12 4 aaa 5
eeee 13 12 15 3 aaa 5
eeee 13 12 15 0 aaa 5
eeee 13 12 15 1 aaa 5
eeee 13 12 15 2 aaa 5
hhhh 4 3 11 0 aaa 7
hhhh 4 3 11 2 aaa 7
hhhh 4 3 13 2 aaa 7
kkkk 0 0 0 0 aaa 9
-----------------------------------------
VIEWの抽出は以下の通り。
basecodeのno
basecodeのname
basecodeのcode
addcodeのbase
addcodeのanum
addcodeのbnum
addcodeのcnum
addcodeのdnum
VIEWの作成条件としては以下の通り。
<条件>
TABLE名:basecodeとaddcodeのnoが存在し、かつ、
baseaddのnoが複数あり、baseが同じものは以下で判断
・anumとbnumとcnumが同一であればその中のdnumが最小であるレコードを抽出
・anumとbnumとcnumが異なれば別々に抽出
上記より、以下のように抽出したい。
<TABLE名:basecodeview>
-----------------------------------------------
no name code base anum bnum cnum dnum
-----------------------------------------------
2 bbbb 103 bbbb 1 1 1 1
3 cccc 203 cccc 12 13 10 0
3 cccc 203 dddd 12 15 3 1
5 eeee 101 eeee 10 3 12 1
5 eeee 101 eeee 13 12 15 0
7 hhhh 115 hhhh 4 3 11 0
7 hhhh 115 hhhh 4 3 13 2
-----------------------------------------------
よろしくお願いします。
No.1
- 回答日時:
下記の様に考えてよいでしょうか?
・basecode の no はユニーク
・basecode と addcode は no が同じ行を結合
そうであれば、no をキーに結合し、dnum 以外の出力項目でグループ化する SQL を VIEW にすれば良いかと。
例) ------------------------------------
CREATE VIEW hoge AS
SELECT
bc.no,
bc.name,
bc.code,
ac.base,
ac.anum,
ac.bnum,
ac.cnum,
MIN(ac.dnum)
FROM
basecode bc INNER JOIN addcode ac USING(no)
GROUP BY bc.no, bc.name, bc.code, ac.base, ac.anum, ac.bnum, ac.cnum
ORDER BY bc.no, ac.base -- ソートする必要が無ければこの行は除去
;
----------------------------------------
この回答への補足
すみません。
再度確認ですが、上記のSQLでanumとbnumとcnumが同一の時は
最小のdnumのみ抽出されるということでよろしいでしょうか。
No.2ベストアンサー
- 回答日時:
> 上記のSQLでanumとbnumとcnumが同一の時は
> 最小のdnumのみ抽出されるということでよろしいでしょうか。
baseが同一のものの中であれば、そうなります。
ただし、 base anum bnum cnum が同じでも no が違えば別々に出力されますが、恐らくそれは問題ない動作ではないのでしょうか?
少なくとも、ご質問に例示されているデータについては例示されている通りの結果が抽出されます。
VIEW定義内のSELECT文は、特に難しい事をやっている訳ではないので、ご自身で精査されると良いと思います。
1. 2つのテーブルを no が同じもので内部結合
同じ値の no が両テーブルに存在するものだけが、取り出されます。
http://www.techscore.com/tech/sql/SQL6/06_02.html/
2. 1で取り出されたデータを no name code base anum bnum cnum でグループ化
つまり最終的な出力項目の内の dnum 以外全てが同じものごとに一まとめにしています。
http://www.techscore.com/tech/sql/SQL5/05_08.html/
3. 2のデータから no name code base anum bnum cnum と dnum の最小値を出力
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Perl Perlでファイルの末尾から指定文字列を検索してファイルに吐き出したい 4 2022/04/04 16:15
- Excel(エクセル) ¥マークを含むパスの処理について(マクロ、または関数) 2 2022/12/25 02:11
- Visual Basic(VBA) VBA。複数のChangeイベントをまとめる方法 2 2022/03/31 12:03
- Excel(エクセル) Excel VBA 3 2023/04/22 10:46
- JavaScript JavaScript?jQuery?で書き方を教えてください。 初心者です。 AAAという要素をステ 2 2023/08/04 22:09
- Excel(エクセル) VBAで重複データを合算したい(時間) 1 2022/12/08 23:06
- Perl perl このテキストファイルを簡単に配列に入れるには? 2 2022/04/27 20:24
- Excel(エクセル) VBAで、シート間の転記するコードを教えてください。 4 2023/03/26 10:43
- Excel(エクセル) Powershell エクセル検索 完全一致の方法 1 2022/06/05 20:19
- その他(データベース) カラム上の重複を削除するクエリを教えてください 3 2022/04/12 14:11
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
SQLで2年連続で値が上昇した年...
-
下記の問合せを行うクエリを、 ...
-
フラグをたてるってどういうこ...
-
【SQL】他テーブルに含まれる値...
-
データ削除とSQL*Loaderでのイ...
-
T-SQLで任意の箇所で強制終了す...
-
オラクルのUPDATEで複数テーブル
-
SELECT INTOで一度に複数の変数...
-
既存データをINSERT文にして出...
-
PostgreSQLのtimestamp型で時間...
-
結合したテーブルをSUMしたい
-
右向き、左向きの速度が最大と...
-
SQLで、Join句で結合したテ...
-
エラーを起こす方法
-
平均値のもとめ方
-
UPDATEで既存のレコードに文字...
-
timestampのデータはどのように...
-
selectの単純繰り返し
-
ゼロ未満の場合で更新する場合
-
sqlに記述できない文字
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
joinの場合のテーブル名の別名...
-
2つの列からの最大値取得
-
複数行の結果を単一列に連結
-
SQLのこと:distinctして並び替...
-
postgreSQLのupdateについて
-
access2000のクエリについて
-
SQL文の長さ制限について
-
SQLで期間をずらした集計処理
-
SQL 複数条件を設定
-
フラグをたてるってどういうこ...
-
SELECT INTOで一度に複数の変数...
-
【SQL】他テーブルに含まれる値...
-
sqlに記述できない文字
-
UPDATEで既存のレコードに文字...
-
テーブル名が可変の場合のクエ...
-
エラーを起こす方法
-
オラクルのUPDATEで複数テーブル
-
truncate tableを使って複数の...
-
結合したテーブルをSUMしたい
-
Accessで今日から5日後
おすすめ情報