从具有特定排序的两个表中选择

时间:2014-03-15 11:41:55

标签: sql sql-server

我有这张表:

Relate : (ID,ArticleID,rArticleID)

TagInArticle: (ItemID,TagID,ArticleID)

我希望一起选择两张桌子。但关联表的结果首先显示 TagInArticle表的结果在它之后由它自己按计数

排序

对于每个表的选择我使用此代码:

quey1:

select  ArticleID, COUNT(*) 
as counts from   TagInArticle  
where TagID in  ( select [TagID] 
from TagInArticle     
where ArticleID=5  ) and ArticleID!=5 
group by ArticleID 

和:

query2:

select rArticleID from Relate
where ArticleID=1

如果表TagInArticle的结果是:

ArticleID    counts

1          |    1

5          |    3

和相关表的结果

ArticleID    

7

我想表明:

7

5

1

我该怎么做?

2 个答案:

答案 0 :(得分:1)

这是你正在寻找的东西

SELECT R.ArticleID
      ,COUNT(T.ArticleID) AS Total
FROM Relate R INNER JOIN TagInArticle T
ON R.ArticleID = T.ArticleID
WHERE R.ArticleID = 1       
GROUP BY R.ArticleID
ORDER BY Total DESC

我没有最模糊的线索你想要做什么但是在查看你提供的结果集之后你可以做这样的事情..一个简单的UNION ALL

SELECT ArticleID
(
select  ArticleID, COUNT(*) 
as counts from   TagInArticle  
where TagID in  ( select [TagID] 
from TagInArticle     
where ArticleID=5  ) and ArticleID!=5 
group by ArticleID 
)A
UNION ALL
select rArticleID 
from Relate
where ArticleID=1

答案 1 :(得分:0)

试试这个,

select  r.ArticleID, ta.TagIDCount as counts 
from   Relate as r
left join 
    (
        select ArticleID,count([TagID]) as TagIDCount
        from TagInArticle    
        group by  ArticleID
    )as   ta on ta.ArticleID = r.ArticleID
order by r.ArticleID desc

已下载订单