Задать вопрос
@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"
  • Вопрос задан
  • 2998 просмотров
Подписаться 1 Средний 2 комментария
Помогут разобраться в теме Все курсы
  • Shultais Education
    Основы SQL
    3 месяца
    Далее
  • Shultais Education
    Продвинутый SQL
    1 месяц
    Далее
  • Merion Academy
    Основы реляционных баз данных SQL
    1 месяц
    Далее
Решения вопроса 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 то вам следует обернуть в полноценный подзапрос.

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

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

Похожие вопросы