1

私はpostsこのように構成されたテーブルを持っています:

id  |  title  |  content  |  tags

tagsテーブル

id  |  name  |  description

postsこの方法でタグをテーブルに配置します。3,2,5,8ここで、番号はtagsテーブルの対応する行番号です。タグで投稿内の関連する投稿を選択する良い方法は何でしょうか。

SELECT * FROM posts WHERE tags ? LIMIT 10

私は論理がかなり苦手です。

4

3 に答える 3

3

ここでデータベースの正規化が役立ちます。1つの列に複数のタグIDを格納することはお勧めできません。おそらく、複数のタグを1つの投稿にリンクするpost_tags構造を持つ新しいテーブルを作成する必要があります。post_id | tag_id

次に、次のクエリを実行できます。

SELECT * FROM posts
INNER JOIN post_tags ON post_tags.post_id = posts.id
WHERE post_tags.tag_id IN(id1,id2,etc.)
于 2012-04-07T10:30:44.347 に答える
2

dbの設計を変更したほうがよいでしょう。投稿とタグの関係の新しいテーブルを作成します。

create table post_tags (
  post_id int,
  tag_id int
)

次に、joinを使用して、次のようにデータを選択できます。

SELECT 
    p.* 
FROM 
    posts p 
LEFT JOIN 
    post_tags pt ON p.id = pt.post_id 
WHERE 
    pt.tag_id IN (?,?,?)
于 2012-04-07T10:29:23.923 に答える
0
SELECT * FROM posts WHERE tags IN ( YOUR_COMMA_SEPRATED_TAG_IDS );

YOUR_COMMA_SEPRATED_TAG_IDS1または1、2、3またはその他...

于 2012-04-07T10:29:01.410 に答える