1
Table tags:
article_id     tag
1              Language
1              Java
1              c++
2              Language
2              c++
3              c++

また、以下のようなデータを作成するために SQL(s) クエリを作成するにはどうすればよいですか:

Table tags_relations:

tag1        tag2     relations_degree
Language    C++     2
Language    Java    1

注: タグが同じ記事を参照している場合、 Relations_degree + 1

このアプローチの目的は、タグ間の関係を計算することです。これについて誰か助けてもらえますか?

4

2 に答える 2

3

何かのようなもの:

SELECT A.tag AS tag1, B.tag AS tag2, COUNT(*) as relations_degree
FROM tags A
     INNER JOIN tags B ON A.article_id = B.article_id
WHERE A.tag = 'Language' AND a.tag <> b.tag
GROUP BY A.tag, B.tag
ORDER BY B.tag ASC

あなたの例に基づいて、tag1 = 'Language' に制限していると仮定しました。

SELECT A.tag AS tag1, B.tag AS tag2, COUNT(*) as relations_degree
FROM tags A
     INNER JOIN tags B ON A.article_id = B.article_id
WHERE A.tag > b.tag
GROUP BY A.tag, B.tag
ORDER BY B.tag ASC
于 2009-12-24T03:30:35.413 に答える
0

セットが次のようになるように、ある種の「タグタイプ」が必要だと思います。

article_id   tag   tag_type
1            Java  Language
1            c++   Language
2            c++   Language
3            c++   Other

そうすれば、とCOUNT(*)でグループ化して、簡単に使用できます。tag_typetag

(UとMEからPRESを作成しようとせずに)他のtag_typeがたくさんあると仮定すると、tag_typeをタグに割り当てるのに最適な方法がわかりません。おそらく、私よりも簡単だと思います。しかし、これは間違いなく進むべき道です。

于 2009-12-24T03:48:55.173 に答える