-- WARNING: This recursive query may hit performance issues or database recursion limits-- on large/deep hierarchies. If execution fails, either increase your database's recursion-- limit settings or use an iterative approach in application code.WITH RECURSIVE all_descendants AS ( -- Base case: direct children of the StandardsFramework SELECT sfi."caseIdentifierUUID" FROM relationships r JOIN standards_framework_item sfi ON sfi."caseIdentifierUUID" = r."targetEntityValue" WHERE r."sourceEntity" = 'StandardsFramework' AND r."sourceEntityKey" = 'caseIdentifierUUID' AND r."sourceEntityValue" = 'c64961be-d7cb-11e8-824f-0242ac160002' AND r."targetEntity" = 'StandardsFrameworkItem' AND r."targetEntityKey" = 'caseIdentifierUUID' UNION ALL -- Recursive case: children of already found items SELECT sfi."caseIdentifierUUID" FROM relationships r JOIN standards_framework_item sfi ON sfi."caseIdentifierUUID" = r."targetEntityValue" JOIN all_descendants ad ON ad."caseIdentifierUUID" = r."sourceEntityValue" WHERE r."sourceEntity" = 'StandardsFrameworkItem' AND r."sourceEntityKey" = 'caseIdentifierUUID' AND r."targetEntity" = 'StandardsFrameworkItem' AND r."targetEntityKey" = 'caseIdentifierUUID' AND r."relationshipType" = 'hasChild')SELECT "caseIdentifierUUID"FROM all_descendants;
WITH grade6_standards AS ( SELECT "caseIdentifierUUID" FROM standards_framework_item WHERE EXISTS ( SELECT 1 FROM json_array_elements_text("gradeLevel") AS elem WHERE elem = '6' )),supporting_components AS ( SELECT DISTINCT r."sourceEntityValue" AS lc_id FROM relationships r JOIN grade6_standards g ON g."caseIdentifierUUID" = r."targetEntityValue" WHERE r."relationshipType" = 'supports' AND r."sourceEntity" = 'LearningComponent' AND r."sourceEntityKey" = 'identifier' AND r."targetEntity" = 'StandardsFrameworkItem' AND r."targetEntityKey" = 'caseIdentifierUUID')SELECT lc.*FROM learning_component lcJOIN supporting_components c ON lc."identifier" = c.lc_id;
Return all the activities for lesson 1 and grade 6, unit 2, section A
Copy
SELECT c.*, u.*, s.*, l.*, a.*FROM course cJOIN relationships r1 ON r1.source_key = c.identifier AND r1.source_label = 'Course' AND r1.target_label = 'LessonGrouping' AND r1.relationship_name = 'hasPart'JOIN lessongrouping u ON u.identifier = r1.target_key AND u."ordinalName" = 'Unit 2'JOIN relationships r2 ON r2.source_key = u.identifier AND r2.source_label = 'LessonGrouping' AND r2.target_label = 'LessonGrouping' AND r2.relationship_name = 'hasPart'JOIN lessongrouping s ON s.identifier = r2.target_key AND s."ordinalName" = 'Section A'JOIN relationships r3 ON r3.source_key = s.identifier AND r3.source_label = 'LessonGrouping' AND r3.target_label = 'Lesson' AND r3.relationship_name = 'hasPart'JOIN lesson l ON l.identifier = r3.target_key AND l."ordinalName" = 'Lesson 1'JOIN relationships r4 ON r4.source_key = l.identifier AND r4.source_label = 'Lesson' AND r4.target_label = 'Activity' AND r4.relationship_name = 'hasPart'JOIN activity a ON a.identifier = r4.target_keyWHERE c.name = 'Grade 6';
Return all 7th grade activities that uses the “Notice and Wonder” instructional routine
Copy
SELECT a.*, ir.*FROM activity aJOIN relationships r ON a.identifier = r.source_key AND r.source_label = 'Activity' AND r.target_label = 'InstructionalRoutine' AND r.relationship_name = 'usesRoutine'JOIN instructionalroutine ir ON ir.identifier = r.target_keyWHERE ir.name = 'Notice and Wonder' AND a."gradeLevel" LIKE '%7%';
SELECT u."ordinalName", u.name, u.identifierFROM course cJOIN relationships r ON c.identifier = r.source_key AND r.source_label = 'Course' AND r.target_label = 'LessonGrouping' AND r.relationship_name = 'hasPart'JOIN lessongrouping u ON u.identifier = r.target_keyWHERE c.name = 'Grade 4' AND u."curriculumLabel" = 'Unit'ORDER BY u."ordinalName";