@freelion93

Как сделать LEFT JOIN в одной таблице?

Есть таблица Activity, в ней занесена активность действий пользователя.
Добавил файл - added, удалил файл - remove. Собственно нужно получить список id файлов которые были добавлены но не удалены.

Пытаюсь сделать вида:

SELECT object_id FROM activity AS a1 WHERE user = "user1" AND subject = "added" LEFT JOIN activity AS a2 ON a1.object_id != a2.object_id WHERE a2.subject = "remove"
  • Вопрос задан
  • 2633 просмотра
Решения вопроса 1
tsklab
@tsklab
Здесь отвечаю на вопросы.
SELECT a1.object_id 
  FROM activity AS a1
    LEFT JOIN activity AS a2 ON a2.object_id = a1.object_id 
  WHERE a1.subject = "added" AND a2.subject = "remove" AND a2.object_id IS NULL

SQL JOIN
VQ5XP.png
Ответ написан
Комментировать
Пригласить эксперта
Ответы на вопрос 1
IgorPI
@IgorPI
Почему нельзя просто выполнить SELECT с нужным условием, я не совсем понял зачем нужен JOIN.

Ваш запрос абсолютно неверный.
Все присоединения нужно делать в самом начале.
Если вы хотите выполнить JOINпосле WHERE то вам следует обернуть в полноценный подзапрос.

Мне кажется вы слишком усложнили вашу задачу, серьёзно ))
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы