加入3个mySQL表的最佳方式

时间:2012-10-01 17:10:09

标签: mysql database join subquery

我有一个标签名称,我需要从标签表中获取标签ID,然后在分类表中查找与标签ID匹配的所有ID,然后获取与分类表中的id匹配的所有项目。我可以在1个查询中完成所有操作,还是需要子查询?以下是数据库结构的示例

tags database
tid, tag

tags taxonomy database
id, wid, tid

items databse
wid, *

我有标签数据库中的标签,我需要从标签数据库中获取tid,然后从分类数据库中返回所有wid,其中tid等于我们刚刚获取的内容,然后从items数据库返回*。我可以通过2个单独的查询完成此操作,但我希望只在1中完成。 感谢

2 个答案:

答案 0 :(得分:4)

你可以JOIN表:

select *
from tags tg
left join taxonomy tx
    on tg.tid = tx.tid
left join items i
    on tx.wid = i.wid

如果您不熟悉JOIN语法,这里有一篇好文章:

Visual Explanation of JOINs

答案 1 :(得分:0)

试试这个:

SELECT *
FROM tags t
INNER JOIN taxonomy t2 ON t2.tid = t.tid
INNER JOIN items i ON i.wid = t2.wid

请注意,这将仅返回所有3个表中匹配的行的数据。