function findMatchedTexasStandards(aq, supportingLCs, relationshipsData, standardsFrameworkItemsData, learningComponentsData) {
const lcIds = supportingLCs.array('identifier');
// First, find which Texas standards have overlapping learning components
const matchedStandardIds = relationshipsData
.filter(d => d.relationshipType === 'supports')
.filter(aq.escape(d => lcIds.includes(d.sourceEntityValue)))
.join(standardsFrameworkItemsData, ['targetEntityValue', 'caseIdentifierUUID'])
.filter(d => d.jurisdiction === 'Texas')
.select('targetEntityValue')
.dedupe('targetEntityValue')
.array('targetEntityValue');
// Then get ALL learning components for those matched standards
const results = relationshipsData
.filter(d => d.relationshipType === 'supports')
.filter(aq.escape(d => matchedStandardIds.includes(d.targetEntityValue)))
.join(standardsFrameworkItemsData, ['targetEntityValue', 'caseIdentifierUUID'])
.filter(d => d.jurisdiction === 'Texas')
.join(learningComponentsData, ['sourceEntityValue', 'identifier']);
// Organize learning component descriptions and identifiers for each matched standard
const finalResults = results
.select('targetEntityKey', 'targetEntityValue', 'statementCode', 'description_2', 'identifier', 'description')
.rename({
targetEntityValue: 'caseIdentifierUUID',
description_2: 'standardDescription',
identifier: 'lc_identifier',
description: 'lc_description'
})
.groupby('caseIdentifierUUID', 'statementCode', 'standardDescription')
.rollup({
lcDescription: d => aq.op.array_agg(d.lc_description),
lcIdentifier: d => aq.op.array_agg(d.lc_identifier)
})
.objects();
console.log(`✅ Found ${finalResults.length} Texas standards with shared learning components (lc):`);
console.log(finalResults);
return finalResults;
}