Microsoft Access Club Access超初心者対象Forum Access初級者対象Forum Access初・中級者対象Forum Access VBA Tips Forum DAO、ADO、SQL Forum

     

リストへもどる

投稿記事の一括表示

タイトル2つのテーブルをマージ 条件付き
記事No172287
投稿日: 2018/06/11(Mon) 18:46
投稿者yamamotoy
OS:Windows7
Access Version:Access 2016

SQLの書き方を教えてください。

下記のような、ボイラーから自動で出る運転停止ログ(L1〜L12)と保守員の保守ログ(M1〜M2)の2つのテーブルがあります。

この2つのテーブルから、保守員ログの停止時間と運転ログを以下の規則でマージします。

保守ログの開始終了中に含まれる運転停止ログは無視。

結果として

L1、L2、L3、M1、L5、L6、L7、L8、L9、M2、L10、L11、L12

と表示したいのですが、このように、M1の2つの時間に含まれたら、抽出しないSQLの書き方を教えて
いただけないでしょうか。(L4 はM1に含まれるので抽出しない)


運転停止ログ
#  開始        終了      時間   停止要因
L1  17/2/3 10:20:30 17/2/3 13:20:30  3.0     給油
L2  17/2/4 10:20:30 17/2/4 13:20:30  3.0     給油
L3  17/2/7 10:20:30 17/2/7 13:20:30  3.0     給油
L4  17/2/7 16:20:30 17/2/7 16:35:30  0.25     弁不動作
L5  17/2/8 10:20:30 17/2/8 15:20:30  3.0     油切れ
L6  17/2/9 10:20:30 17/2/9 15:20:30  3.0     油切れ
L7  17/3/3 10:20:30 17/2/3 13:20:30  3.0     給油
L8  17/3/4 10:20:30 17/2/4 13:20:30  3.0     給油
L9  17/2/7 10:20:30 17/2/7 13:20:30  3.0     給油
L10  17/3/7 16:20:30 17/2/7 16:35:30  0.25    モータ不動作
L11  17/3/8 10:20:30 17/2/8 15:20:30  3.0     油切れ
L12  17/3/9 10:20:30 17/2/9 15:20:30  3.0     油切れ

保守ログ
#  開始        終了      時間   停止要因
M1  17/2/7 16:00  17/2/7 18:00    2:00   2月保守
M2  17/3/7 15:00  17/2/7 16:00    1:00   3月保守  

タイトルRe: 2つのテーブルをマージ 条件付き
記事No172288
投稿日: 2018/06/12(Tue) 09:27
投稿者よろずや
こんな感じ。多分ね。

SELECT U.[#], U.[開始], U.[終了], U.[時間], U.[停止要因]
FROM [運転停止ログ] AS U
WHERE NOT EXISTS(SELECT * FROM [保守ログ] AS H WHERE U.[開始] BETWEEN H.[開始] AND H.[終了])
UNION ALL
SELECT H.[#], H.[開始], H.[終了], H.[時間], H.[停止要因]
FROM [保守ログ] AS H
ORDER BY 2;

タイトルRe^2: 2つのテーブルをマージ 条件付き
記事No172289
投稿日: 2018/06/12(Tue) 21:49
投稿者yamamotoy
すごい。ありがとうございます。


> こんな感じ。多分ね。
>
> SELECT U.[#], U.[開始], U.[終了], U.[時間], U.[停止要因]
> FROM [運転停止ログ] AS U
> WHERE NOT EXISTS(SELECT * FROM [保守ログ] AS H WHERE U.[開始] BETWEEN H.[開始] AND H.[終了])
> UNION ALL
> SELECT H.[#], H.[開始], H.[終了], H.[時間], H.[停止要因]
> FROM [保守ログ] AS H
> ORDER BY 2;

- 以下のフォームから自分の投稿記事を修正・削除することができます -
処理 記事No パスワード

ページの先頭へ 前ページへ戻る