У меня есть таблица связей для отношений «многие ко многим» с полями
-
Я хотел бы отфильтровать все теги, связанные с заметками, которые содержат указанное количество тегов.
Например, если я выберу теги 'Running
', 'Form
' и 'Times
', я бы хотел увидеть все теги, связанные с заметками, имеющими эти 3 тега. .
Этот процесс будет использоваться пользователем на внешнем интерфейсе для уточнения результатов, которые он ищет, поэтому мне нужно иметь возможность генерировать этот SQL с кодом (node.js
), так как фильтрация по тегам может происходить во многих случаях. раз.
У меня есть приведенный ниже код SQL, который может запрашивать два тега, но есть некоторые проблемы с ним:
- Это не кажется эффективным
- Это не может быть легко сгенерировано с помощью кода, если необходимо добавить еще один слой файловых файлов
SELECT DISTINCT idtag FROM table WHERE idnote IN (SELECT idnote FROM
(SELECT * FROM table WHERE idnote IN (SELECT idnote FROM table WHERE idtag
= 'Example')) as t1 where t1.idtag = 'SecondExample');
Я надеюсь получить несколько советов о том, как повысить эффективность этого кода, а также о том, как превратить оператор sql в нечто, легко генерируемое кодом.