Найти первичный ключ из одной таблицы в списке через запятую

Передо мной была поставлена задача создать отчет, основанный на очень плохо спроектированной структуре таблиц.

Рассмотрим следующие две таблицы. Они содержат техники, которые каждый человек любит выполнять в каждом спортзале. Имейте в виду, что уникальный человек может отображаться в нескольких строках таблицы PERSONNEL:

PERSONNEL
+-----+-----+-------+--------+-----------+
| ID  | PID | Name  | Gym    | Technique |
+-----+-----+-------+--------+-----------+
| 1   | 122 | Bob   | GymA   | 2,3,4     |
+-----+-----+-------+--------+-----------+
| 2   | 131 | Mary  | GymA   | 1,2,4     |
+-----+-----+-------+--------+-----------+
| 3   | 122 | Bob   | GymB   | 1,2,3     |
+-----+-----+-------+--------+-----------+

TECHNIQUES
+-----+------------+
| ID  | Technique  |
+-----+------------+
| 1   | Running    |
+-----+------------+
| 2   | Walking    |
+-----+------------+
| 3   | Hopping    |
+-----+------------+
| 4   | Skipping   |
+-----+------------+

У меня возникли проблемы с запросом MSSQL, который надежно предоставит мне список всех людей в таблице, выполняющих определенную технику.

Например, скажем, я хочу список всех, кто любит пропускать. Желаемые результаты будут:

PREFERS_SKIPPING
+-----+-------+--------+
| PID | Name  | Gym    |
+-----+-------+--------+
| 122 | Bob   | GymA   |
+-----+-------+--------+
| 131 | Mary  | GymA   |
+-----+-------+--------+

Точно так же:

PREFERS_HOPPING
+-----+-------+--------+
| PID | Name  | Gym    |
+-----+-------+--------+
| 122 | Bob   | GymA   |
+-----+-------+--------+
| 122 | Bob   | GymB   |
+-----+-------+--------+

Я могу легко разбить строки в ColdFusion, но это не вариант из-за размера таблицы PERSONNEL. Кто-нибудь может помочь?

Ответы на вопрос(4)

Ваш ответ на вопрос