У меня есть следующая структура таблицы моей базы данных:
структура базы данных
Моя цель - вывести каждую строку tbl_Therapeuten (это мои сотрудники) с название их тренировок (по-немецки Fortbildung). Названия тренингов хранятся в tbl_Forbildungen. А тренинги, которые проходят у каждого сотрудника, хранятся в tbl_Therapeut_Fortbildung. Для вывода я хочу показать название тренировки, а не идентификатор. Как это:
вывод
Я программирую на C#, SQL сервере. Сначала я попробовал это:
string sSQL = "SELECT t.*, STRING_AGG(tf.Id_Fortbildung, ';') AS Fortbildungen " +
"FROM tbl_Therapeuten t " +
"FULL OUTER JOIN tbl_Therapeut_Fortbildung tf on t.Id = tf.Id_Therapeut ";
Но это вызывает ошибку, в которой говорится, что я не использую tbl_Therapeuten.Id в агрегатной функции или в предложении Group by.
Затем я попробовал это :
string sSQL = "SELECT t.Id, t.Nachname, STRING_AGG(tf.Id_Fortbildung, ';') AS Fortbildungen " +
"FROM tbl_Therapeuten t " +
"FULL OUTER JOIN tbl_Therapeut_Fortbildung tf on t.Id = tf.Id_Therapeut " +
"GROUP BY t.Id, t.Nachname";
Это сработало (кроме отображения имени тренировки, но идентификатора), но я не хочу явно называть каждый столбец tbl_Therapeuten. Я хочу использовать "t. *". Но это не работает:
string sSQL = "SELECT t.*, STRING_AGG(tf.Id_Fortbildung, ';') AS Fortbildungen " +
"FROM tbl_Therapeuten t " +
"FULL OUTER JOIN tbl_Therapeut_Fortbildung tf on t.Id = tf.Id_Therapeut " +
"GROUP BY t.*";
Так что мне нужна помощь :)
И еще я не знаю, как это сделать, так это отображать название тренировок вместо id.
Спасибо за помощь!