Как уже отмечали другие комментаторы, вы не указали точно, как вы связываете людей и цвета. Если вы используете таблицу ссылок (person_id, color_id), тогда нет способа решить эту проблему в стандартном SQL, поскольку для нее требуется сводная или кросс-табуляция, которая не является частью стандартного SQL.
Если вы хотите добавить условие, что количество цветов ограничено и известно, а также время разработки, вы можете придумать решение, используя одно соединение для каждого цвета, а также функции CASE или IF в SQL. Но это было бы не изящно, и, кроме того, я бы не стал доверять этому состоянию, чтобы оставаться верным очень долго.
Если вы можете придумать другой способ хранения информации о цветовой привязке, у вас может быть больше возможностей для получения нужного вам результата, но другой метод хранения подразумевает некоторую степень денормализации базы данных, что вполне может вызвать другие трудности.
В противном случае вам нужно будет сделать это в хранимой процедуре или коде приложения.
Какая база данных? –
-1: Вы должны сообщить нам, какую СУБД вы используете. –
Я использую ADO для подключения к Visual FoxPro DB. – Harley