简体   繁体   中英

Mysql query to join two tables using many to many relation

I have three tables called Notes another table called Tags and third as a Join table called NoteTagsJoin , Join table holds two foreign keys primary Note id and Primary Tag id. I use this query to get all Notes with tagId:

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

And this query to get all Tags:

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

How can I get Note and all its tags using just Note id with one query?

Are you looking for two 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
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;

Change the "id" with the appropriate id's that you're using. It's important that the id's in the JOINs are coherent, else there will be no link between them.

If you want to select fields of the 3 tables, do this:

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 

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM