У меня есть 3 таблицы - Таблица tblFactorDefinition, tblFamily и tblConstituent.
- В tblFactorDefinition есть FamilyID с соответствующими факторами в столбце FieldName (а именно Factor1, Factor2, ..... Factor9)
- Таблица tblConstituent имеет ассоциированное значение Factors (значение для Factor1, Factor2, .. Factor9, если оно существует) для каждого компонента внутри Family и может быть объединено FamilyID с FamilyID в tbLFacctorDefinition.
- Таблица tblFamily имеет Семейные детали.(т.е. FamilyTypeID = 1 является индексом или FamilyTypeID = 2 является ETF).
При попытке получить FamilyID с факторами, соответствующими значениям Factors в tblConstituent, я получаю в 2-3 раза больше строк.Например, FamilyID = 10216 имеет 27975 компонентов, но мой запрос выбирает более 55k + строк.Я дошел до стены, пытаясь выяснить, JOIN.
SELECT DISTINCT tc.FamilyID,
tfd.FieldName,
tc.Factor1,
tc.Factor2,
tc.Factor3,
tc.Factor4,
tc.Factor5,
tc.Factor6,
tc.Factor7,
tc.Factor8,
tc.Factor9,
tf.OpenDate
FROM soladbserver..tblFamily tf
JOIN soladbserver..tblFactorDefinition tfd
ON tfd.FamilyID = tf.FamilyID
JOIN soladbserver..tblConstituent tc
ON tc.FamilyID = tf.FamilyID
AND tc.StartDate <= Getdate()
AND tc.EndDate > Getdate()
WHERE tf.OpenDate = Cast(Getdate() AS DATE)
AND tf.FamilyTypeID = 1
AND tf.DataProviderID = 2
AND tf.FamilyID IN ( 10216 )
Я ожидаю 27975 строк со значениями коэффициентов для сопоставления FieldName Factor1, Factor2, ..., Factor9), учитывая, что все имеют значения.
Снимок экрана 1 представляет собой таблицу tblConstitution, Secreenshot 2 представляет собой таблицу tblFactorDefinition, снимок экрана 3,4,5 представляет собой таблицу tblFamily: