2012-01-19 10 views
1

タグのキーワードがいっぱいのテーブルがあります。SQL他のテーブルに文字列を含む投稿順に並べ替え

Tags 
------------------ 
asp 
sql 
html 

と投稿

posts 
------------------ 
I really like ASP 
This week with stuff about ASP 
This post contains SQL 

の全表Iは、記事テーブルの出現を含む最もユニークなポストのためにトップ10のタグを表示したいです。

これは私が持っているものですが、それはごみです、私は恥ずかしいです。

SELECT Tag,(SELECT Count(*) FROM Posts WHERE post LIKE '%Tags.Tag%') As Mentions FROM Tags ORDER BY Mentions DESC 

助けてください!私は神秘的な何かがあることを知っていますUNIONまたはGROUP BY私はここで行方不明です。

のMySQLでテスト
+0

、GROUP BYなしで最初に実行することは有益です"あなたのコードが書かれているように1か、または(問題が発言しているように聞こえるように)5であるのですか? – Mikeb

+0

申し訳ありませんが、ユニークな投稿としてカウントされています。 –

答えて

3
SELECT TOP 10 * 
FROM (
    SELECT tag,COUNT(tag) AS Total 
    FROM tags t 
    JOIN posts p ON p.post LIKE '%' + t.tag + '%' 
    GROUP BY tags 
) totals 
ORDER BY Total Desc 
+0

Perfectamondoは応援します! –

0

:ポストは、「ASP ASP ASP ASP ASPの場合

SELECT tag,count(*) AS n 
FROM tags 
JOIN posts ON post LIKE CONCAT("%",tag,"%") 
GROUP BY tag 
ORDER BY n DESC 
LIMIT 10 

これがどのように機能するかを説明するために、

SELECT tag,post 
FROM tags 
JOIN posts ON post LIKE CONCAT("%",tag,"%"); 

+------+------------------------+ 
| tag | post     | 
+------+------------------------+ 
| asp | I really like asp  | 
| asp | this week: asp   | 
| sql | this post contains sql | 
+------+------------------------+ 
3 rows in set (0.00 sec) 
関連する問題