Mysql-запрос для объединения двух таблиц, используя отношение многие ко многим

0

У меня есть три таблицы, называемые Notes другая таблица под названием " Tags а третья - как таблица Join, называемая NoteTagsJoin, таблица Join содержит два первичных идентификатора Notes и идентификатор первичного тега. Я использую этот запрос для получения всех Notes с tagId:

SELECT * FROM notes INNER JOIN note_tag_join ON notes.entryId = note_tag_join.noteId WHERE note_tag_join.tagId =:tagId

И этот запрос, чтобы получить все теги:

SELECT * FROM tags INNER JOIN note_tag_join ON tags.tagId = note_tag_join.tagId WHERE note_tag_join.noteId =:noteId

Как я могу получить примечание и все его теги, используя только идентификатор Notes с одним запросом?

  • 0
    объединяет все 3 таблицы и сортирует данные по идентификатору заметки
  • 0
    Отредактируйте свой вопрос и покажите пример данных и желаемых результатов.
Теги:

3 ответа

0

Если вы хотите выбрать поля из трех таблиц, сделайте следующее:

SELECT (fields that you want to show) FROM tableA 
INNER JOIN tableB ON tableA.commonField = tableB.commonField 
INNER JOIN tableC ON tableB.commonField = tableC.commonField 
0
SELECT * FROM table_name
LEFT JOIN table_name2 ON table_name.id = table_name2.id
LEFT JOIN table_name3 ON table_name2.id = table_name3.id
WHERE table_name.id = id;

Измените "id" на соответствующий идентификатор, который вы используете. Важно, чтобы идентификатор в JOINs был последовательным, иначе между ними не будет никакой связи.

0

Вы ищете два соединения?

SELECT n.*, t.*
FROM notes n INNER JOIN
     note_tag_join nt
     ON n.entryId = nt.noteId INNER JOIN
     tag t
     ON t.tagId = nt.tagId
WHERE n..entryId = :noteId
  • 0
    Будет ли этот запрос возвращать заметку и все возможные теги как один ответ? Или строки с одинаковыми примечаниями для каждого тега?
  • 0
    @kosas. , , Отдельные строки для каждого тега, что кажется совместимым с вопросом.
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню