[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[orca-users:05234] Re: FileMakerへORCAからのデータインポートについて



植田さん、饗庭さん こんにちは

中山@鳥取県です。

インポートデータの欠落、重複問題が議論になり始めたことは
自体ORCAが現場に普及し始めた結果と感じます。
実運用している生データが無いと問題にさえなりませんので。

さてまず最初に私が提示したクエリーは最終的な解ではありませんので
あのままでは未完成です。

どうすれば一発で欠落も重複もないクエリーとして完成できるか
もう少し考えてみましょう。

まず
SELECT tbl_ptnum.ptnum, tbl_hkncombi.hkncombinum, tbl_pthkninf.tekstymd,
tbl_pthkninf.tekedymd, tbl_ptkohinf.tekstymd, tbl_ptkohinf.tekedymd
FROM (((((tbl_ptnum INNER JOIN tbl_ptinf ON tbl_ptnum.ptid = tbl_ptinf.ptid)
LEFT JOIN tbl_hkncombi ON tbl_ptinf.ptid = tbl_hkncombi.ptid) LEFT JOIN
tbl_pthkninf ON (tbl_hkncombi.hknid = tbl_pthkninf.hknid) AND
(tbl_hkncombi.ptid = tbl_pthkninf.ptid)) LEFT JOIN tbl_ptkohinf ON
(tbl_hkncombi.koh1id = tbl_ptkohinf.kohid) AND (tbl_hkncombi.ptid =
tbl_ptkohinf.ptid)) LEFT JOIN tbl_ptkohinf AS tbl_ptkohinf_1 ON
(tbl_hkncombi.ptid = tbl_ptkohinf_1.ptid) AND (tbl_hkncombi.koh2id =
tbl_ptkohinf_1.kohid)) LEFT JOIN tbl_hknjainf ON tbl_pthkninf.hknjanum =
tbl_hknjainf.hknjanum
ORDER BY tbl_ptnum.ptnum, tbl_hkncombi.hkncombinum, tbl_pthkninf.tekstymd;

を実行した結果の7000番〜7020番台を提示します。IDは全てダミーデータですがコン
ビ等は生です。
(改行されて見にくいかもしれませんが)

ptnum	hkncombinum	tbl_pthkninf.tekstymd	tbl_pthkninf.tekedymd
tbl_ptkohinf.tekstymd	tbl_ptkohinf.tekedymd
07000               	1	20030611	20050611
07000               	2	20030611	20050611	20020614	20060630
07000               	3			20020614	20060630
07000               	4			20020614	20060630
07001               	1	20030401	99999999
07001               	2	20030401	99999999	20030704	20070731
07002
07003               	1	20030401	99999999
07004               	1	20030401	99999999
07004               	2	20030401	99999999	20000403	20040430
07004               	3			20000403	20040430
07005               	1	20030401	99999999
07005               	2	20030401	99999999	20030226	20070228
07005               	3			20030226	20070228
07006               	1	20030401	20060930
07007
07008
07009
07010
07011               	1	20030401	99999999
07011               	2	20030401	99999999	20030812	20070831
07012               	1	20030401	99999999
07013
07014
07015               	1	20030401	99999999
07016               	1	20030722	99999999
07016               	2	20030722	99999999	20030722	20070731
07017
07018               	1	20030401	99999999
07019               	1	20030901	99999999
07019               	2	20030401	20030930
07019               	3	20030401	20030930	20030117	20070131
07019               	4			20030117	20070131
07019               	5			20030117	20070131
07019               	6	20031001	99999999
07019               	7	20031001	99999999	20030117	20070131
07019               	8	20031001	99999999
07019               	9	20031001	99999999	20030117	20070131
07020               	1	20030824	99999999
07020               	2	20030824	99999999	20030824	20070831

07007のようにhkncombinumがnull だとwhere条件で1等に絞るとデータが
欠落します。

また絞らなければ07019のIDの様にデータは重複します。
tekstymdからtekedymdの期間もID毎に異なります。

07019は特殊な例ですがhkncombinumの6,7は通常のクエリーでは
削除されたことになっているデータも取り出せてしまいます。
よってこのyぷなデータを除く条件も必要です。

以上より一発で欠落も重複もないクエリーを作るためには
提示したデータが欠落も無く、重複もしない条件式を考えて
クエリーを作る必要があります。

ちなみに私もまだ最終解を出していません。
是非一緒に考えてみませんか?
期限なし、正解が出るまで。

ptnum,hkncombinum,tekstymd,tekedymd,tbl_ptkohinf.tekstymd,tbl_ptkohinf.teked
ymd
のみの項目で解が出ればあとは項目を追加しても大丈夫のはずです。

中山小児科内科医院
中山裕雄