2

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

tags database
tid, tag

tags taxonomy database
id, wid, tid

items databse
wid, *

我有来自标签数据库的标签,我需要从标签数据库中获取 tid,然后从分类数据库中返回所有 wid,其中 tid 等于我们刚刚获取的值,然后从项目数据库中返回 *。我可以通过运行 2 个单独的查询来完成这项工作,但我希望只用 1 个来完成。谢谢

4

2 回答 2

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语法,这里有一篇好文章:

JOIN 的可视化解释

于 2012-10-01T17:12:48.617 回答
0

试试这个:

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

Note that this will return data only for rows that match in all 3 tables.

于 2012-10-01T17:14:14.560 回答