Как выбрать несвязанные данные в many-many отношениях с мягким, удаляют?

У нас есть данные в many-many отношениях, где каждый из наших участников имеет, может выбрать предметы, которые они изучают. Эти данные используют мягкое - удаляют образец, где ДАТА И ВРЕМЯ , заархивированный , область остается ПУСТОЙ УКАЗАТЕЛЬ до такого времени, когда данные считают удаленными.

То, что мы хотим сделать, выбрать предметы, что пользователь в настоящее время не подписывается на, игнорируя предметы, на которые они в настоящее время подписываются.

Это - структура таблицы:

`member`
- id
- name
- created
- updated
- archived

`subject`
- id
- name
- created
- updated
- archived

`member_subject`
- member_id
- subject_id
- created
- archived

Основная структура вопроса, которую мы имеем:

SELECT DISTINCT subject.*
FROM subject
LEFT JOIN member_subject ON member_subject.subject_id = subject.id
WHERE subject.archived IS NULL

# Not sure how to go about the rest of the WHERE clause here

ORDER BY subject.name
0
nl ja de

2 ответы

это произведет все предметы для каждого пользователя, который в настоящее время не подписывается,

SELECT  d.*, e.*
FROM    
        (
            SELECT  a.ID memberID, b.ID SubjectID
            FROM    member a, subject b
        ) c
        INNER JOIN member d
            ON c.memberID = d.ID
        INNER JOIN Subject e
            ON c.SubjectID = e.ID
        LEFT JOIN member_subject f
            ON  c.memberID = f.member_ID AND
                c.SubjectID = f.subject_ID
WHERE   f.member_ID IS NULL
        -- AND d.ID = ''                        -- <<== for specific userID
0
добавлено

Попробуйте этот вопрос -

SELECT s.id
FROM subject s
LEFT JOIN member_subject ms
  ON ms.subject_id = s.id
GROUP BY s.id
HAVING COUNT(ms.subject_id) = 0

... добавьте дополнительный, ГДЕ фильтр вам нужно.

0
добавлено
DBA - русскоговорящее сообщество
DBA - русскоговорящее сообщество
1 345 участник(ов)

Общаемся и обсуждаем темы, посвященные DBA, PostgreSQL, Redis, MongoDB, MySQL, neo4j, riak и т.д. См. также: @devops_ru, @kubernetes_ru, @docker_ru, @nodejs_ru Рекомендуем сразу отключить уведомления, чтобы пребывание здесь было полезным и комфортным.

MySQL
MySQL
995 участник(ов)

The group is about MySQL. For code use hastebin.com. Admin: @smlkw

SqlCom.ru - Стиль жизни SQL
SqlCom.ru - Стиль жизни SQL
908 участник(ов)

Правила чата - https://t.me/sqlcom/88269 @sqlcom - основной канал (только MS SQL) @sql_ninja - второй канал (SQL вопросы начального уровня и свободное общение) @Gopnegbot - Викторина по SQL Server (наберите в привате /quiz). Предложения в @sql_ninja

SQL_Ninja
SQL_Ninja
340 участник(ов)

Правила чата - https://t.me/sqlcom/88269 @sqlcom - основной канал (только SQL) @sql_ninja - второй канал (SQL вопросы начального уровня и свободное общение) @Gopnegbot - Викторина по SQL Server (наберите в привате /quiz)