だから私はdbのquery
ために以下を持っていますmysql
SELECT CFM.display_name, CFM.field_type, CFM.option_value
FROM company_mast
LEFT JOIN component_mast ON company_mast.id = component_mast.company_id
LEFT JOIN CustomField_mast CFM ON CFM.Company_ID = Component_mast.Company_ID
AND CFM.Component_ID = component_Mast.Component_ID
WHERE component_mast.component_name = 'Assets'
AND component_mast.project_id = '1'
そして、それは私が望むものを正確に返します。このようにクエリすることもできます
SELECT CFM.display_name, CFM.field_type, CFM.option_value
FROM company_mast
LEFT JOIN component_mast ON company_mast.id = component_mast.company_id
LEFT JOIN CustomField_mast CFM ON CFM.Company_ID = Component_mast.Company_ID
AND CFM.Component_ID = component_Mast.Component_ID
WHERE component_mast.component_name = 'Assets'
AND company_mast.company_name = 'Company' <!-- this line is different -->
繰り返しますが、私が望むものを正確に返します。それでも、このクエリを実行すると
SELECT CFM.display_name, CFM.field_type, CFM.option_value
FROM company_mast
LEFT JOIN component_mast ON company_mast.id = component_mast.company_id
LEFT JOIN CustomField_mast CFM ON CFM.Company_ID = Component_mast.Company_ID
AND CFM.Component_ID = component_Mast.Component_ID
WHERE component_mast.component_name = 'Assets'
AND component_mast.project_id = '1'
AND company_mast.company_name = 'Company'
0 の結果が得られます。現在のところ、これは機能していますが、このデータベースが大きくなると、同じ会社に同じ名前のコンポーネントが複数存在するようになります。そのため、一意の識別子である project_id を追加する必要があります。
3 番目のクエリが最初の 2 つのクエリを返さないのはなぜですか? どうすれば修正できますか?