0

他の 2 つの間のリンクとして機能するデータベース テーブルがあるとします。この場合、「フィクション」や「ガーデニング」など、本とタグの間のリンクです。次のデータセットがあるとします。

Book_id | tag_id
----------------
1       | 13
1       | 43
1       | 15
2       | 13
2       | 25

「タグ 13、43、および 15 のリンクがある本のみを検索する」と言うには、どのようなクエリを実行しますか? つまり、追加するタグが多いほど、表示される本の数が少なくなります。

それが理にかなっていることを願っています。お時間をいただきありがとうございます。

4

3 に答える 3

1

これを試して

SELECT
  Book_id
FROM
  book_tags
GROUP BY
  Book_id
HAVING 
  SUM( CASE WHEN tag_id IN (13, 43, 15) THEN 1 END ) >= 3

13, 43, 15タグが付いている本(すべて)だけが必要book_id = 1で、結果として返されます。SUM() >= 3検索するタグの総数を指定します。この場合は3、つまり13, 43, 15

SQLFIDDLE

于 2013-05-09T17:36:41.583 に答える
0

次のようなことを試すことができます:

select book_table.* from book_table, link_table where book_table.id = link_table.book_id and link_table.tag_id in (13, 43, 15)

本用に別のテーブルがある場合..

于 2013-05-09T17:21:48.983 に答える
0

あなたの質問を正しく理解していれば...次のように:

SELECT `Book_id` FROM `table` WHERE `tag_id` IN (13,43,25) LIMIT 0, 10;
于 2013-05-09T17:21:01.957 に答える