これにより、私は一日中頭を悩ませました。計算されたフィールドを使用して結合しようとしているところで、複数のクエリがあります。この最初のクエリは意図したとおりに動作しますが、MS Accessデザインビューは機能しません。これはSQLビューで編集できるので大したことではありません。作業クエリの微妙な変更により、JOINエラーが発生する
SELECT PM_qryBOM_1.parentid AS LVL0,
PM_qryBOM_1.childid AS LVL1,
[PM_qryBOM_1].[parent_part_no] & "/" & [PM_qryBOM_1].[child_part_no] AS BOM_Address,
PM_qryBOM_1.qty,
[PM_qryBOM_1].[parentid] & "/" & [PM_qryBOM_1].[childid] AS BOM_ID,
sol_avgcost.avgcost_material,
sol_avgcost.avgcost_labor,
sol_avgcost.avgcost_sub,
cm_qrypndj_avg.avgofunit_hrs,
PM_qryBOM_1.parentid AS Parent_BOM_ID,
PM_qryBOM_1.parent_part_no AS Parent_BOM_Address,
pm_qrybom_lvl1_costroll.mult
FROM (((pm_qrybom AS PM_qryBOM_1
LEFT JOIN pm_qrybom AS PM_qryBOM_t
ON PM_qryBOM_1.parentid = PM_qryBOM_t.childid)
LEFT JOIN sol_avgcost
ON PM_qryBOM_1.child_part_no = sol_avgcost.part_no)
LEFT JOIN cm_qrypndj_avg
ON PM_qryBOM_1.child_part_no = cm_qrypndj_avg.part_no)
LEFT JOIN pm_qrybom_lvl1_costroll
ON [PM_qryBOM_1].[parentid] & "/" & [PM_qryBOM_1].[childid] =
pm_qrybom_lvl1_costroll.parent_bom_id
WHERE (((PM_qryBOM_t.childid) IS NULL))
ORDER BY [PM_qryBOM_1].[parent_part_no] & "/" & [PM_qryBOM_1].[child_part_no];
私はJOIN
にこのようにしたいと思う複数の他の質問があります。そこで次のクエリに同じ構文を適用しようとしましたが、エラーが発生します。
JOIN式はサポートされていません。
SELECT pm_qrybom_lvl0.lvl0,
pm_qrybom.childid AS LVL1,
pm_qrybom.qty,
[pm_qrybom_lvl0].[bom_address] & "/" & [pm_qrybom].[child_part_no] AS BOM_Address,
[pm_qrybom_lvl0].[bom_id] & "/" & [pm_qrybom].[childid] AS BOM_ID,
pm_qrybom_lvl0.bom_address AS Parent_BOM_Address,
pm_qrybom_lvl0.bom_id AS Parent_BOM_ID,
sol_avgcost.avgcost_material,
cm_qrypndj_avg.avgofunit_hrs,
cm_collections.cpq_material,
pm_qrybom_lvl1_costroll.mult,
Iif([cm_collections].[cpq_material] <> 0, [cm_collections].[cpq_material],
Iif([mult] = 0, [sol_avgcost].[avgcost_material], [mult])) AS Material_Calc
FROM ((((pm_qrybom_lvl0
INNER JOIN pm_qrybom
ON pm_qrybom_lvl0.lvl0 = pm_qrybom.parentid)
LEFT JOIN sol_avgcost
ON pm_qrybom.child_part_no = sol_avgcost.part_no)
LEFT JOIN cm_qrypndj_avg
ON pm_qrybom.child_part_no = cm_qrypndj_avg.part_no)
LEFT JOIN cm_collections
ON pm_qrybom.childid = cm_collections.partid)
LEFT JOIN pm_qrybom_lvl1_costroll
ON [pm_qrybom_lvl0].[bom_id] & "/" & [pm_qrybom].[childid] =
pm_qrybom_lvl1_costroll.parent_bom_id
ORDER BY [pm_qrybom_lvl0].[bom_address] & "/" & [pm_qrybom].[child_part_no];
両方のクエリの構文は同じです。参照テーブル名とフィールド名のみが異なります。だから、私は1つのクエリで式に結合できますが、次のクエリでは結合できませんか?私はこの問題を探知し、JOIN
の文でON
の後ろにすべてを囲むように括弧を入れることを提案しました。私はそれを試みたが、それは問題を解決しなかった。
私は絶対にこの1つに固執しているので、任意の提案をいただければ幸いです。
異なるテーブルとフィールドで構文がまったく同じではありません。あなたは後者に 'INNER JOIN'を持っています。アクセスクエリは、複数の 'JOIN'を使用して独自にスクリプトを作成することは非常に困難です。私が '/'で 'ON'節で不具合を信じているクエリ設計でできるだけ構築してから、SQLビューで拡張してください。 – Parfait
私の提案は、ネストされた結合を削除して、それらをリファクタリングして行にすることです。読みやすくなりました。私は、Accessがこのようにするのがなぜ好きであるか分かりませんが、このようにする必要はありません。私はそれをリファクタリングして答えを書きます。 – Alan
SQLビューからデータシートビューに切り替えると、Accessにエラーが表示され、SQLの一部が強調表示されます。それはどの部分ですか? – Andre