Mysql查询使用多对多关系

时间:2018-05-28 10:54:50

标签: mysql sql

我有三个名为Notes的表,另一个名为Tags的表,第三个名为NoteTagsJoin的连接表,连接表包含两个外键主要注释ID和主标记ID。我使用此查询来获取tagId的所有Notes:

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

如何只使用带有一个查询的Note id来获取Note及其所有标签?

3 个答案:

答案 0 :(得分: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

答案 1 :(得分: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更改“id”。重要的是JOIN中的id是连贯的,否则它们之间就没有联系。

答案 2 :(得分:0)

如果要选择3个表的字段,请执行以下操作:

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