0

私はブログのウェブサイトに取り組んでいて、これで立ち往生しています:

MySQL

  1. ' cat_list'テーブルには列が含まれています:cat_idcat_name(14エントリ)、
  2. ' post'テーブルにはいくつかの列があり、そのうちの1つは、ブログ投稿がタグ付けされたカテゴリIDcategoryを格納する必要があります。カテゴリIDはに保存されます。[ブログ投稿は複数のカテゴリでタグ付けできるため]array(19820,83729)

post1つのカテゴリIDで' cat_list'を検索し、''に参加してを取得しようとしましたcat name。これを行うのを手伝ってください、または私が考慮すべき他の代替データベース設計はありますか?

4

2 に答える 2

0

投稿が複数のカテゴリでタグ付けできる場合、テーブル モデルは間違っています。ブログ投稿とカテゴリの間に関連テーブルが必要です。category idテーブルから削除し、列とpostを含むテーブルを作成します。次に、これらの 2 つの列にインデックスを追加して、両方向 (カテゴリ別または投稿別) の検索を高速化します。post-categorypost-idcategory-id

于 2013-01-24T11:24:28.323 に答える
0

これを試して:

SELECT c.cat_name FROM post as p 
LEFT JOIN cat_list AS c
ON c.cat_id = p.cat_id
WHERE p.post_id = "3"

サンプルデータ:

CREATE TABLE cat_list(
  cat_id int auto_increment primary key,
  cat_name varchar(30)
  );

CREATE TABLE post (
  post_id int auto_increment primary key,
  cat_id int,
  post varchar(30)
  );

INSERT INTO cat_list (cat_name)
VALUES ("cat1"),("cat2"), ("cat3"),("cat4"),("cat5"),("cat6"),("cat7"),("cat8");

INSERT INTO post (cat_id, post)
VALUES (1,"jnkljlkajlkjaoiuweiuoi"), (1,"wuoieuoiuoidudjhkj"), (2,"eiuuqueiuriewuqyiuu"), (8,"vzbvbxvnbxmnbmn nmncmn");

SQL フィドルのデモ

投稿の ID を変更してカテゴリを選択します。

于 2013-01-24T13:09:48.380 に答える