PostgreSQL - порядок по массиву
У меня есть 2 таблицы - курс, который содержит идентификатор и название курсов и tagCourse, который содержит теги для каждого курса.
course tagcourse
------------ ----------------
PK id_course PK tag
name PK, FK id_course
Я хотел бы написать функцию, которая ищет курсы по заданному массиву тегов и возвращает их в порядке количества подходящих тегов. Однако я нене знаю, как написать это правильно и эффективно. Пожалуйста, помогите мне.
то есть.
CREATE OR REPLACE FUNCTION searchByTags(tags varchar[])
RETURNS SETOF.....
RETURN QUERY SELECT * FROM course c INNER JOIN tagcourse tc ON c.id_course = tc.id_course
WHERE ??? ORDER BY ???
END....