テーブルで克服するのに面白い問題があります。フルパーツデータベース(私たちは自由にハックするのではなく、必要なクエリを実行しません)からのデータの簡略化されたセットを保存しました。私は、エンジニアが空間(xyz位置とxyz回転)と領域内の位置を含む完全に複製されたアセンブリを作成した場所を見つける必要があります。私は基本的にメインシステムの削除のためにそれらをリストアウトする必要があります。表にはトップレベルのアセンブリが示されており、それは第1レベルの子です。 Part_1(0,0,0 0,0,0)
| - - | Part_2(0,0,0 0,0,0)
MS Access構造テーブル内の行のグループと一致します
Assembly_1
すなわち
| - Part_3(0,0,0 0,0,0)
Assembly_2
| - Part_1(0,0,0 0,0,0)
| - Part_2(0,0,0 0,0,0)
| - Part_3(0,0,0 0,0,0)
Assembly_3
| - Part_1(500,0,0 0,0,0)
| - Part_2(500 、0,0 0,0,0)
| - Part_3(500,0,0 0,0,0)
Assembly_4
| - Part_4(0,0,0 0,0、 0)
| - Part_5(0,0,0 0,0,0)
| - Part_6(0,0,0 0,0,0)のような1つのテーブルに格納され
:例で
Parent ID | Child ID | Assembly Level | Area | Position Assembly_1 | Assembly_1 | 0 | 0001 | 0,0,0 0,0,0 Assembly_1 | Part_1 | 1 | 0001 | 0,0,0 0,0,0 Assembly_1 | Part_2 | 1 | 0001 | 0,0,0 0,0,0 Assembly_1 | Part_3 | 1 | 0001 | 0,0,0 0,0,0 Assembly_2 | Assembly_2 | 0 | 0001 | 0,0,0 0,0,0 Assembly_2 | Part_1 | 1 | 0001 | 0,0,0 0,0,0 Assembly_2 | Part_2 | 1 | 0001 | 0,0,0 0,0,0 Assembly_2 | Part_3 | 1 | 0001 | 0,0,0 0,0,0 Assembly_3 | Assembly_3 | 0 | 0001 | 0,0,0 0,0,0 Assembly_3 | Part_1 | 1 | 0001 | 500,0,0 0,0,0 Assembly_3 | Part_2 | 1 | 0001 | 500,0,0 0,0,0 Assembly_3 | Part_3 | 1 | 0001 | 500,0,0 0,0,0 Assembly_4 | Assembly_4 | 0 | 0002 | 0,0,0 0,0,0 Assembly_4 | Part_4 | 1 | 0002 | 0,0,0 0,0,0 Assembly_4 | Part_5 | 1 | 0002 | 0,0,0 0,0,0 Assembly_4 | Part_6 | 1 | 0002 | 0,0,0 0,0,0
Iはアセンブリ1 & 2が表示されることを期待します、アセンブリ3ではなく、同じパーツを使用していますが、x、y、zの位置が異なり、アセンブリ4ではなく異なるパーツを使用し、別の領域にあるためです。
Assembly | Cloned Assembly | Area Assembly_1 | Assembly_2 | 0001
そして、あなたはどこアセンブリ1 & 2スワップ両側追加行で終わる場合、私は気にしない:私が望む何
のようなもので抽出することです。これは、構造全体を手動で検索するよりもはるかに美味です!
私はSQLでこれに近づくことさえできないので、これはVBAソリューション(主に私がSQLを理解するよりもはるかにVBAを理解しているように、 (私は、20000を超える広告申込情報があり、全データセットを検索し、商品内の400個のエリアと比較していると信じています)、これは約30+がある商品ごとに繰り返されます。
重複を抽出するために以下の例を試しましたが(実際にレベル0のアセンブリが誤って製品に挿入された場所を抽出するためにはうまくいきました)、これは1行が別の行いくつかの行のグループは別のグループと一致します。
ヘルプ/ガイダンス、またはVBAの使用を肯定するだけでも大歓迎です!
更新されたSQL:
SELECT DISTINCT
a1.GROUP,
a1.SUB_GROUP,
a1.ParentID AS Assembly,
(SELECT DISTINCT AssemblyTable.NAME
FROM AssemblyTable
WHERE AssemblyTable.ChildID=a1.ParentID) AS NAME,
(SELECT DISTINCT AssemblyTable.OWNER
FROM AssemblyTable
WHERE AssemblyTable.ChildID=a1.ParentID) AS OWNER,
a1.Area,
(SELECT DISTINCT AssemblyTable.ITEM_CREATION
FROM AssemblyTable
WHERE AssemblyTable.ChildID=a1.ParentID) AS ITEM_CREATION,
a2.ParentID AS CLONED_ASSEMBLY,
(SELECT DISTINCT AssemblyTable.NAME
FROM AssemblyTable
WHERE AssemblyTable.ChildID=a2.ParentID) AS CLONE_NAME,
(SELECT DISTINCT AssemblyTable.OWNER
FROM AssemblyTable
WHERE AssemblyTable.ChildID=a2.ParentID) AS CLONE_OWNER,
(SELECT DISTINCT AssemblyTable.ITEM_CREATION
FROM AssemblyTable
WHERE AssemblyTable.ChildID=a2.ParentID) AS CLONE_CREATION
FROM (SELECT * FROM AssemblyTable ORDER BY AssemblyTable.ITEM_CREATION ASC) AS a1
INNER JOIN (SELECT * FROM AssemblyTable ORDER BY AssemblyTable.ITEM_CREATION ASC) AS a2
ON (a1.ParentID < a2.ParentID)
AND (a1.Area = a2.Area)
AND (a1.[Position] = a2.[Position])
AND (a1.ChildID=a2.ChildID)
WHERE a1.ParentID<>a2.ParentID
ORDER BY a1.GROUP, a1.SUB_GROUP, a1.Area, a1.ParentID;
表今ある:
Parent ID | Child ID | Name | OWNER | Assembly Level | Area | Position | ITEM_CREATION Assembly_1 | Assembly_1 | Assembly_1_Name | User_1 | 0 | 0001 | 0,0,0 0,0,0 | 01-01-2016 Assembly_1 | Part_1 | Part_1_Name | User_1 | 1 | 0001 | 0,0,0 0,0,0 | 01-01-2016 Assembly_1 | Part_2 | Part_2_Name | User_1 | 1 | 0001 | 0,0,0 0,0,0 | 01-01-2016 Assembly_1 | Part_3 | Part_3_Name | User_1 | 1 | 0001 | 0,0,0 0,0,0 | 01-01-2016 Assembly_2 | Assembly_2 | Assembly_2_Name | User_2 | 0 | 0001 | 0,0,0 0,0,0 | 01-01-2017 Assembly_2 | Part_1 | Part_1_Name | User_2 | 1 | 0001 | 0,0,0 0,0,0 | 01-01-2017 Assembly_2 | Part_2 | Part_2_Name | User_2 | 1 | 0001 | 0,0,0 0,0,0 | 01-01-2017 Assembly_2 | Part_3 | Part_3_Name | User_2 | 1 | 0001 | 0,0,0 0,0,0 | 01-01-2017 Assembly_3 | Assembly_3 | Assembly_3_Name | User_3 | 0 | 0001 | 0,0,0 0,0,0 | 01-01-2016 Assembly_3 | Part_1 | Part_1_Name | User_3 | 1 | 0001 | 500,0,0 0,0,0 | 01-01-2016 Assembly_3 | Part_2 | Part_2_Name | User_3 | 1 | 0001 | 500,0,0 0,0,0 | 01-01-2016 Assembly_3 | Part_3 | Part_3_Name | User_3 | 1 | 0001 | 500,0,0 0,0,0 | 01-01-2016 Assembly_4 | Assembly_4 | Assembly_4_Name | User_4 | 0 | 0002 | 0,0,0 0,0,0 | 01-01-2016 Assembly_4 | Part_4 | Part_4_Name | User_4 | 1 | 0002 | 0,0,0 0,0,0 | 01-01-2016 Assembly_4 | Part_5 | Part_5_Name | User_4 | 1 | 0002 | 0,0,0 0,0,0 | 01-01-2016 Assembly_4 | Part_6 | Part_6_Name | User_4 | 1 | 0002 | 0,0,0 0,0,0 | 01-01-2016
私は時折、まだ見てい:
Assembly | Cloned Assembly | Area Assembly_2 | Assembly_1 | 0001
VBAは、ここにあなたの友人になるだろう。 SQLで比較できるようにファイルを平坦化しようとする可能性がありますが、それは悪夢に変わる可能性があります。 (特に、あなたの例のようにアセンブリごとに3つではなく、アセンブリごとに可変量の部品を持つことができる場合) – abraxascarab