2010-02-01 166 views
1

要说明这一点,请耐心等待。狮身人面像GROUP BY

这是我的MySQL表结构,通过索引的狮身人面像

------- ------- -------------- 
tag_id | tag | foreign_id | 
------- ------- -------------- 
1  love  111 
2  blue  222 
3  lover  333 
4  yellow 444 
5  love  555 
6  lov  666 

我试图从狮身人面像让我查询的“爱”是这样的:

love = 2 hit 
lover = 1 hit 

任何人有任何想法如何做到这一点?我尝试下面的PHP代码,但它所输出,不过是为了“爱”

$cl->setGroupDistinct('tag'); 
$cl->setGroupBy('tag', SPH_GROUPBY_ATTR); 
$cl->SetLimits(0, 10, 500); 
$result = $cl->query("love", 'mytags'); 

一堆TAG_ID的我甚至试过,但它没有工作,以及

$cl->setGroupDistinct('tag'); 

我认为狮身人面像的组通过可以用来解决这个问题,但我很无能。非常感谢帮助!谢谢!

回答

0

我不认为你想对你正在分组的同一个属性使用setGroupDistinct。在SQL的术语,将类似于:

SELECT COUNT(DISTINCT tag) 
FROM my_tags 
GROUP BY tag 

哪些据我所知只会返回1匹配每个标签。

我想如果你只是删除setGroupDistinct的呼叫或将不同的字段更改为外国id(因此过滤出多个相同的标签附加到一个条目),你会很好去。

0

如果要计算标记和顺序desc.you应向setGroupBy函数添加额外的子句。

$cl->setGroupBy('tag', SPH_GROUPBY_ATTR,'@count desc'); 
$result = $cl->query('');