У меня есть три таблицы, называемые 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 с одним запросом?
Если вы хотите выбрать поля из трех таблиц, сделайте следующее:
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
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 был последовательным, иначе между ними не будет никакой связи.
Вы ищете два соединения?
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