两个表,文章表和tag表,
文章表有一个字段是存放用,号分隔的tag的,如:“经济,房产”
并且文章是有分类的,如经济类,娱乐类等(有个分类id字段),
tag表只有一个tag名字和被使用次数两个字段,如有8篇文章使用了经济这个标签:
tagname  tagnum
经济    8
---------
问题是,取得某一分类文章的前10个热门标签,就是tagnum字段的数值最大的为热门标签。
如何写sql?好难,因为两个表没什么关系,只有标签有关系。

解决方案 »

  1.   

    或者不用关联tag表只使用一个文章表,就可以得出被最多文章使用的前10个标签名?
    总之我想取得某个分类文章的前10个热门标签,好难
      

  2.   


    1.select a.tagname from tag a where (select count(*) from tag where tag<a.tagname)<=8
    2.以逗号拆分文章表字段
    create function dbo.fn_split 
    (
    @inputstr varchar(8000), )
    returns @temp table (a varchar(200))
    as begin
    declare @i int
    declare @seprator varchar(10)
    set @seprator =','
    set @inputstr = rtrim(ltrim(@inputstr))
    set @i = charindex(@seprator, @inputstr)while @i >= 1
    begin
    insert @temp values(left(@inputstr, @i - 1))set @inputstr = substring(@inputstr, @i + 1, len(@inputstr) - @i)
    set @i = charindex(@seprator, @inputstr)
    endif @inputstr <> '\'
    insert @temp values(@inputstr)return 
    end
    go
    处理数据,
    create table #(tag varchar(50))
    declare @s varchar(300)
    declare cur cursor for 
    select tag from 文章表
    open cur
    fetch cur into @s
    while @@fetch_status>0
    begin
    insert into # select dbo.fn_split(@s)
    fetch cur into @s
    end 
    close cur
    select top 10 * from 
    (
    select tag,count(*) rnm from # group by tag
    ) order by rnm
    drop table #
    自己调一下,我这没环境
      

  3.   

    這樣寫的啊?我應該用在php網頁裡的,是mysql數據庫的
      

  4.   

    same question 
    HTTP://www.ebigear.com/Fund/PlayNews.php?NewsID=29453&ID=285885
      

  5.   

    $SQL="select A.TagName from tag A,article B where charindex(B.artTag,A.TagName)>0 and B.cateid=2 order by A.TagNum desc limit 10;";
    --------
    出错FUNCTION mydb.charindex does not exist   $SQL="select A.TagName from tag A,article B where B.artTag like '%A.TagName%' and B.cateid=2  order by A.TagNum desc limit 10;";
    -----
    没出错但什么都没显示  $SQL="select A.TagName from tag A left join article B on B.artTag like '%A.TagName%'  where B.cateid=2 order by A.TagNum desc limit 10;";
    --------
    没出错但什么都没显示没办法了,怎么写这个like '%A.TagName%'?