SELECT DISTINCT user.name<BR>
FROM USERS, TASKS AS task1, TASKS AS task2<BR>
WHERE USERS.ID = task1.user_id AND USERS.ID = task2.user_id AND task1.id <> task2.id;
Это представляет собой соединение таблицы задач с самим собой по идентификатору пользователя,
Ограничение task1.id <> task2.id оставляет только строки с парами разных задач, которые были у одного и того же пользователя,
Объединение с ПОЛЬЗОВАТЕЛЯМИ объединяет имя пользователя,
И DISTINCT отфильтровывает дубликаты.
Если ваша СУБД создает проблемы с производительностью по сравнению с DISTINCT, то:
- получи лучшую СУБД
- переписать запрос как коррелированный подзапрос
(жанр ВЫБЕРИТЕ имя ОТ ПОЛЬЗОВАТЕЛЕЙ, ГДЕ USERS.ID в (ВЫБЕРИТЕ ИДЕНТИФИКАТОР ОТ ЗАДАЧ ЗАДАЧА1 СОЕДИНЕННЫЕ ЗАДАЧИ задача2 ВКЛ ... ГДЕ);