Microsoft Access 掲示板

共通するIDを抽出したい

2 コメント
views
4 フォロー

少しずつですが勉強中の者です。
製品別部品構成(部品表)と製品一覧のテーブルがあります。製品IDでリレーション。T部品一覧テーブルを基にクエリ Q部品一覧 を作成してますおり、部品IDでリレーション。テーブルのフィールド構成は下記です
T製品別部品構成:部品構成ID, 製品ID, 部品ID, 員数
T製品一覧:製品ID, 製品品番, check ---チェックボックス
T部品一覧:部品ID, 部品型番
これで製品にチェック入れた分の部品IDを共通した分だけ抽出したいのですが下記のクエリだとチェック入れた製品の全部品が抽出されます。(クエリのSQLそのままです)
SELECT T製品別部品構成.部品ID
FROM T製品一覧 INNER JOIN (T製品別部品構成 INNER JOIN Q部品一覧1 ON T製品別部品構成.部品ID = Q部品一覧1.部品ID) ON T製品一覧.製品ID = T製品別部品構成.製品ID
WHERE (((T製品一覧.check)=Yes))
GROUP BY T製品別部品構成.部品ID;
例えば(チェックした)製品1には部品A・B・Cがあり、製品2には部品B・Cの場合、上記のクエリだと部品A~Cが抽出されます。これを共通部品のみのB・Cだけ抽出したいのですが、方法を思いつきません。

宜しくお願いします。

beginner
作成: 2024/09/13 (金) 16:20:28
通報 ...
1

※ T製品別部品構成 は 製品ID + 部品ID でユニークになっていると仮定します

SELECT y.部品ID
FROM T製品一覧 x
INNER JOIN T製品別部品構成 y
        ON x.製品ID = y.製品ID
WHERE x.check
GROUP BY y.部品ID
HAVING Count(1) = (
           SELECT Count(1) FROM T製品一覧 WHERE check
       )
;
2
beginner 2024/09/17 (火) 08:22:54 ddfe5@e1964

mayuさん ありがとうございます。連絡遅くなりすみませんでした。
確かに、グループ後の部品IDのカウントでいけますね。”製品ID + 部品ID でユニークになっている”の様にデータの分析ができてませんでした。勉強になりました。お世話になりました。