Запрос Postgres для возврата всех результатов от пользователя - PullRequest
1 голос
/ 09 ноября 2019

В момент, когда я отмечаю свидетельства учащегося, все, что я показываю, это список результатов. Эксперты (отвечающие за оценку свидетельств учащихся) хотели бы знать, был ли результат уже частично или полностью достигнут.

Я работал над запросом 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), но яхотел бы получить все результаты,

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...