ユニオン結合で困っています。
以下のような3つのテーブルがあり、正規化したいため以下のようなユニオン結合と変数を設定したクエリを作成したいです。
加工前のテーブルはtbl1,tbl2,tbl3とあり各フィールド名は以下のとおりです。
tbl1: ID,右眼術前検査日,左眼術前検査日
tbl2: ID,右眼手術検査日,左眼手術検査日
tbl3: ID,右眼術後検査日,左眼術後検査日
これらのテーブルを以下のようにするクエリはどのようにしたらよいでしょうか?
求めるクエリqry
qry: ID, 眼, 検査時期, 検査日
101,右, 術前, 2007/01/01
101,右, 手術, 2007/01/05
101,右, 術後, 2007/01/06
101,左, 術前, 2007/01/02
101,左, 手術, 2007/01/05
....
テーブルによって変数を設定するところの組み合わせがよく分からなくて困っています。大変恐縮ですが、ご教示のほどよろしくお願いします。
A 回答 (3件)
- 最新から表示
- 回答順に表示
No.3
- 回答日時:
少し、雑な回答に反省・・・。
補足:<tab4>を作成するコードは僅か6行。
[イミディエイト]
? CNNExecute("INSERT INTO tab4 SELECT 患者_ID,0 As 期間区分,0 As 左右,左目術前検査日 As 検査日 FROM tab1")
True
? CNNExecute("INSERT INTO tab4 SELECT 患者_ID,0 As 期間区分,1 As 左右,右目術前検査日 As 検査日 FROM tab1")
True
? CNNExecute("INSERT INTO tab4 SELECT 患者_ID,1 As 期間区分,0 As 左右,左目手術検査日 As 検査日 FROM tab2")
True
? CNNExecute("INSERT INTO tab4 SELECT 患者_ID,1 As 期間区分,1 As 左右,右目手術検査日 As 検査日 FROM tab2")
True
? CNNExecute("INSERT INTO tab4 SELECT 患者_ID,2 As 期間区分,0 As 左右,左目術後検査日 As 検査日 FROM tab3")
True
? CNNExecute("INSERT INTO tab4 SELECT 患者_ID,2 As 期間区分,1 As 左右,右目術後検査日 As 検査日 FROM tab3")
True
<tab4>
ID__患者_ID___期間区分___左右___検査日
12_______101________術前___左_______2007/08/11
13_______101________術前___右_______2007/08/11
14_______101________手術___左_______2007/08/12
15_______101________手術___右_______2007/08/12
16_______101________術後___左_______2007/08/15
17_______101________術後___右_______2007/08/15
なお、CNNExecute関数は、自作のSQL文の実行関数です。
ところで、UNION クエリに挑んでみました。(生まれて初めてでシンド!)
<クエリ1>
SELECT 患者_ID,0 As 期間区分,0 As 左右,左目術前検査日 As 検査日 FROM tab1 WHERE 患者_ID=101
UNION SELECT 患者_ID,0 As 期間区分,1 As 左右,右目術前検査日 As 検査日 FROM tab1 WHERE 患者_ID=101;
患者_ID__期間区分__左右___検査日
_____101____________0______0____2007/08/11
_____101____________0______1____2007/08/11
Where節の条件を変えれば・・・
患者_ID__期間区分__左右___検査日
_____101____________0_____0_____2007/08/11
_____101____________0_____1_____2007/08/11
_____102____________0_____0_____2007/08/11
_____102____________0_____1_____2007/08/11
同じ要領で3つのテーブルを結合すればOKであることも確認しました。
0,1は、関数で所定の文字列に変換されたらいいです。
No.2
- 回答日時:
服飾デザイナーでプログラマではないので難しいクエリはサッパリ。
そこで、複雑なクエリを回避する私なりの方法を・・・。
<tab4>
ID____________long
患者_ID_____long
期間区分___byte
左右_________byte
検査日______date
[実際にデータを登録してコピぺ]
ID___患者_ID____期間区分___左右___検査日
1__________101_________術前______左___2007/08/11
2__________101_________術前______右___2007/08/11
3__________101_________手術______左___2007/08/12
4__________101_________手術______右___2007/08/12
5__________101_________術後______左___2007/08/15
6__________101_________術後______右___2007/08/15
通常は、テーブルをこのように設計しますよね。
このテーブルにクエリで見た目だけでも戻そうということですよね。
ならば、そういう関数 CreateTempTab4() を作成。
SELECT CreateTempTab4('tab1', 'tab2', 'tab3');"
これでも、一応、クエリには違いないでしょう。
なお、CreateTempTab4()のソースをなんて補足はなしです。
(そこは、武士の情けってもんでお願いします)
No.1
- 回答日時:
例えばこんな感じになります。
select *
from(
select id, "右" as 眼,"術前" as 検査時期,右眼術前検査日 as 検査日 from tbl1
union
select id, "左" as 眼,"術前" as 検査時期,左眼術前検査日 as 検査日 from tbl1
)
where id = 患者ID
;
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- メガネ・コンタクト・視力矯正 15年前に眼科を受診したところ、両目円錐角膜と診断されました 何度かコンタクトを無くしてしまったり、 4 2022/03/26 06:16
- 病院・検査 眼科と学校で視力検査の結果が違うのはなんでですか? ちなみに私は学校で視力検査をしたときに右がAで左 5 2023/04/22 11:01
- メガネ・コンタクト・視力矯正 両目で視力が全然違います 数ヶ月前結膜炎になった際眼科で視力検査をした時 右が0.4左が0.2だった 5 2023/05/17 10:08
- 眼・耳鼻咽喉の病気 繰り返す副鼻腔炎 2 2022/11/29 18:52
- 眼・耳鼻咽喉の病気 眼底検査で要検査 2 2023/05/31 16:16
- 運転免許・教習所 運転免許を取得する時の視力について 6 2022/12/09 18:57
- 眼・耳鼻咽喉の病気 3歳3ヶ月 遠視メガネ 1 2023/05/30 11:28
- 眼・耳鼻咽喉の病気 目の治療で 6 2023/02/24 09:14
- 運転免許・教習所 運転免許の更新 5 2023/02/06 22:19
- メガネ・コンタクト・視力矯正 高3です 小さい時に先天性内斜視で年長さんの時に手術をしました。それでメガネの矯正は小4ぐらいでメガ 3 2023/07/08 23:42
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
首吊りどこ締めるの
-
至急!尿検査前日にオナニーし...
-
白血球が多いとどんな心配があ...
-
腕を見たら黄色くなってる部分...
-
検便についてです。 便は取れた...
-
彼女のことが好きすぎて彼女の...
-
精子が黄色?
-
勃起する時って痛いんですか? ...
-
尿検査前日に自慰行為した時の...
-
尿検査の前日は自慰控えたほう...
-
口の中に黒い血の塊
-
これって喉仏ですか? 私は女性...
-
精子に血が・・・
-
中出しをするとお腹が痛い・・・。
-
納豆食べた後の尿の納豆臭は何故?
-
甲状腺腫れ
-
EXCELで式からグラフを描くには?
-
EXCELで条件付き書式で空白セル...
-
筋トレするとチンコが縮んじゃ...
-
爪が紫色?
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
至急!尿検査前日にオナニーし...
-
首吊りどこ締めるの
-
尿検査の前日は自慰控えたほう...
-
尿検査前日に自慰行為した時の...
-
検便についてです。 便は取れた...
-
白血球が多いとどんな心配があ...
-
中出しをするとお腹が痛い・・・。
-
射精をして1週間以内に尿検査を...
-
彼女のことが好きすぎて彼女の...
-
腕を見たら黄色くなってる部分...
-
勃起する時って痛いんですか? ...
-
変な話しになります。尿検査で...
-
これって喉仏ですか? 私は女性...
-
EXCELで条件付き書式で空白セル...
-
男です。昨日の午後3時くらいに...
-
今朝、毎朝の習慣でオナニーし...
-
納豆食べた後の尿の納豆臭は何故?
-
1日前の検尿
-
値が入っているときだけ計算結...
-
精子が黄色?
おすすめ情報