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.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 の最小値を出力
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のみ抽出されるということでよろしいでしょうか。
お探しの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ランキング
-
joinの場合のテーブル名の別名...
-
2つの列からの最大値取得
-
SQLで期間をずらした集計処理
-
SELECT INTOで一度に複数の変数...
-
IDとパスワードについて。
-
エラーを起こす方法
-
UPDATEで既存のレコードに文字...
-
オラクルのUPDATEで複数テーブル
-
フラグをたてるってどういうこ...
-
【SQL】他テーブルに含まれる値...
-
timestampのデータはどのように...
-
Accessで今日から5日後
-
テキストボックスの背景をVB...
-
SQLで、Join句で結合したテ...
-
sqlに記述できない文字
-
truncate tableを使って複数の...
-
ACCESS VBAでSeekメソッドの処...
-
データ無し時は空白行にしたい...
-
2つのテーブルをLIKE演算子のよ...
-
AccessVBAについて テーブルの...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
joinの場合のテーブル名の別名...
-
2つの列からの最大値取得
-
複数行の結果を単一列に連結
-
SQLのこと:distinctして並び替...
-
postgreSQLのupdateについて
-
SQL 複数条件を設定
-
access2000のクエリについて
-
SQLで期間をずらした集計処理
-
SQL文の長さ制限について
-
フラグをたてるってどういうこ...
-
SELECT INTOで一度に複数の変数...
-
【SQL】他テーブルに含まれる値...
-
sqlに記述できない文字
-
UPDATEで既存のレコードに文字...
-
テーブル名が可変の場合のクエ...
-
エラーを起こす方法
-
オラクルのUPDATEで複数テーブル
-
truncate tableを使って複数の...
-
結合したテーブルをSUMしたい
-
Accessで今日から5日後
おすすめ情報