2010-02-01 126 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('');