В момент, когда я отмечаю свидетельства учащегося, все, что я показываю, это список результатов. Эксперты (отвечающие за оценку свидетельств учащихся) хотели бы знать, был ли результат уже частично или полностью достигнут.
Я работал над запросом SQL, который возвращает результаты учащихся и были ли они частичноили полностью удовлетворены.
- У студентов есть много доказательств
- у доказательств много доказательств * итоги
- у доказательств есть много результатов, благодаря вещественным доказательствам
- доказательство_утемов принадлежит к доказательствам
- доказательство-результат принадлежит_ к результату
- учащиеся имеют много единиц, через enrollent_units
- единицы имеют много результатов
Для каждого результата я должен: получить результатсодержание, проверьте, есть ли какие-либо доказательства-итоги, которые принадлежат доказательствам учащихся (которые частично удовлетворены для этого результата) и, наконец, проверьте, есть ли какие-либо доказательства-результаты, которые принадлежат_ свидетельствам студентов (которые полностью удовлетворены для этого результата)
Моя схема: следующая:
# Table name: company_students
#
# id :bigint not null, primary key
has_many :evidences
has_many :units, through: :enrolled_units,
================
# Table name: company_student_enrolled_units
#
# id :bigint not null, primary key
# completed :boolean default(FALSE)
# student_id :integer
# unit_id :integer
belongs_to :student
belongs_to :unit
================
# Table name: curriculum_evidences
#
# id :bigint not null, primary key
# description :text
# title :string
# assigned_coursework_id :integer
# student_id :integer
has_many evidences_outcomes
has_many outcomes through evidence_outcomes
================
# Table name: curriculum_outcomes
#
# id :bigint not null, primary key
# code :text
# content :text
# position :integer
# outcome_group_id :integer
# unit_id :integer
has_many :evidence_outcomes
has_many :evidences through evidence_outcomes
================
# Table name: curriculum_evidence_outcomes
#
# id :bigint not null, primary key
# meets_outcome :boolean default(FALSE)
# partially_met :boolean default(FALSE)
# curriculum_id :integer
# enrolled_unit_id :integer
# evidence_id :integer
# outcome_id :integer
# student_id :integer
belongs_to :evidence
belongs_to :outcome
================
Попытался изменить мои объединения, но безуспешно
SELECT DISTINCT CASE WHEN partially_met='f'
THEN 'True'
ELSE 'False'
END AS Partially_met,
co.id AS outcome_id,
co.unit_id,
co.content,
students.id AS student_id
FROM company_students AS students
JOIN curriculum_evidences
AS ce
ON students.id = ce.student_id
LEFT JOIN curriculum_evidence_outcomes ceo
ON ce.id = ceo.evidence_id
LEFT JOIN curriculum_outcomes
AS co
ON co.id=ceo.outcome_id
LEFT JOIN curriculum_evidences
AS cev
ON cev.student_id=ceo.student_id
WHERE students.id = 901
ORDER BY co.content asc
У меня ограниченные знания в SQL, и мой запрос просто возвращает результаты, к которым имеет отношение студент (в данном примере студент 901), но яхотел бы получить все результаты,