我有3个表:表1- "taxonomy_index“,其中有4列(列是nid、tid、粘稠的、创建的)。
表2-“节点”,其中有15列(列为nid、vid、type等)。)
表3- "taxonomy_term_data“,其中有6列(列为tid、vid、name等)
我想加入这三张桌子,也有一些条件。
我知道每个查询,但我想将所有查询设置为一个,并形成一个连接。
查询1
SELECT count(*), tid
FROM taxonomy_index
GROUP BY tid HAVING COUNT(*) >3这个查询给了我两个值,一个是count,另一个是tid。(使用tid )多少次。
查询2
select *
from node
where type='book' OR type='student'
OR type='teacher' OR type='class';在这里,我将得到与这些内容类型相关联的节点。
我想加入三张桌子。在输出中,我希望获得每个tid使用的次数(查询1)和类型(查询2),并从taxonomy_term_data获取tid名称。
给定类型的计数、tid、名称
发布于 2018-02-06 10:48:39
SELECT distinct t1.TID, t3.name, cntt1.count from taxonomy_index t1
inner join
(
SELECT count(*) as 'count', t1.tid
FROM taxonomy_index t1
GROUP BY t1.tid HAVING COUNT(*) >3
) cntt1 on t1.tid = cntt1.tid
inner join node t2 on t1.nid = t2.nid and (type='book' OR type='student' OR
type='teacher' OR type='class')
inner join taxonomy_term_data t3 on t1.tid = t3.tid发布于 2018-02-06 08:45:50
好的,假设每次都可以在tid上加入,您可以使用以下语法。请注意,CTE在这里并不是简写的,我只是发现它们对于可读性很有用。
;WITH CTE_Count AS
(
SELECT count(*) AS Count, tid
FROM taxonomy_index
GROUP BY tid HAVING COUNT(*) >3
)
, CTE_Node AS
(select *
from node
where type='book' OR type='student'
OR type='teacher' OR type='class' )
, CTE_TermData AS
(SELECT * FROM taxonomy_term_data)
SELECT CC.tid, CC.Count, CN.Node, CT.tid_Name
FROM CTE_Count AS CC
INNER JOIN CTE_Node AS CN ON CN.tid = CC.tid
INNER JOIN CTE_TermData AS CT ON CT.tid = CC.tidhttps://stackoverflow.com/questions/48637886
复制相似问题