试图查询标记对象(多对多表)

时间:2014-03-03 17:41:19

标签: mysql sql

我想要查询三个表:

MODS的

mod_id
author
url
name

代码

tag_id
tag_name
tag_url

tags_to_mods (mods& tags有多对多关系)

ttm_id
tag_id
mod_id

基本上我正在尝试找到与给定mod_id相关的tag_name和tag_id。

我该怎么做呢?我是SQL的新手,还没有尝试正确查询这样的关系数据。我认为有一种比我选择的更好的方法。

我对此的尝试(伪(ish)代码):

x = SELECT tag_id FROM tags_to_mods WHERE mod_id = $mod_id

SELECT tag_name, tag_id FROM tags WHERE tag_id = x

它得到了理想的结果,但我必须两次查询我的表...

2 个答案:

答案 0 :(得分:1)

试试这个(其中$ mod_id是Mod的id):

select tg.tag_name, tg.tag_id
from Tags tg
inner join tags_to_mods tm
on(tg.tag_id = tm.tag_id)
where tm.mod_id = $mod_id;

答案 1 :(得分:0)

SELECT m.author, m.name, m.url, t.tag_id, t.tag_name
FROM Mods AS m
INNER JOIN tags_to_mods AS tm ON tm.mod_id = m.mod_id
INNER JOIN Tags AS t ON t.tag_id = tm.tag_id
WHERE m.mod_id = $mod_id