Пользовательские функции

Снова здравствуйте, уважаемые участники сообщества. Подскажите пожалуйста как сделать следующую пользовательскую функцию:

Пользовательская функция возвращает информацию об
исполнителях, которые создали альбомы в двух и более
стилях

Я что-то делаю не так, как это исправить:

create function uf_two_or_more()
returns table
as
return(select distinct s.Name
from Singers s join Discs d on d.SingerId=s.Id
where (select count(distinct StyleId) from Styles st
join Discs d on d.StyleId=st.Id join
Singers s on s.Id=d.SingerId)
>= 2) 

Приведите аргументы по параметру “что я делаю Так”.
В чем вопрос то?
Организовать базу данных?
Или написать СУБД?

Так а что выдает, какая-то ошибка или результат не тот?

Скрипт для создания базы не выложили чтобы можно было посмотреть.
и не объяснили что вам не нравится в вашей функции

SELECT S.Name
  FROM (SELECT SingerId,COUNT(DISTINCT StyleId) AS CountStyles FROM Discs GROUP BY SingerId) U
    LEFT JOIN Singers S ON S.Id=U.SingerId
    WHERE U.CountStyles>=2
1 лайк

Выводятся просто имена исполнителей distinct. А в условии совсем не это нужно

Простите, подумал что схемы достаточноMusic_Collection_db.txt (3.9 КБ)

А какая там еще информация об исполнителях кроме их имен?

Никакой, только имена и айдишник.

Это работает. Нужно подтянуть джоины. А то я только обычные использую.

А что тогда нужно вывести?

Спасибо большое)

Только можете объяснить что такое U? Не совсем понимаю, как тут все происходит?

псевдоним временной таблицы, которую создает вложенный запрос

Ну да, я так и понял. Просто я попытался изменить и mananagement studio начала ругаться. Наверно глюк какой-то

Ага, в студии глюк )) Изменил что-то, да не правильно - вот и весь твой глюк

Нет, я сделал все правильно. Наверно просто выполнил ваш скрипт, а потом в нем попытался что-то изменить. После того как удалил функцию все норм. Не судите строго, учусь