Как отмечали другие комментаторы, вы не показываете, как именно вы связываете людей и цвета. Если вы используете таблицу связывания (person_id, color_id), то нет способа решить эту проблему в стандартном SQL, поскольку для этого требуется сводная или перекрестная таблица, которая не является частью стандартного SQL.
Если вы хотите добавить условие, что количество цветов ограничено и известно, а также время разработки, вы можете придумать решение, используя одно соединение для каждого цвета и функции CASE или IF в SQL. Но это было бы некрасиво, и, кроме того, я бы не стал доверять этому условию, чтобы оно оставалось верным очень долго.
Если вы сможете придумать другой способ хранения информации о связывании цветов, у вас может быть больше возможностей для получения желаемого вывода, но другой метод хранения предполагает некоторую степень денормализации базы данных, что вполне может вызвать другие трудности.
В противном случае вам придется сделать это в хранимой процедуре или в коде приложения.
person
Larry Lustig
schedule
12.03.2010