3

私は最近、MySQL データベースに配列を格納することで問題が解決すると考えました...それから、私の問題に対するより簡単な解決策があることに気付くまで、頭を壁にぶつけました。残念ながら、私は一体何をする必要があるのか​​ 理解できないようです。

私は2つのテーブルを持っています。ユーザーとエントリ。各ユーザーは、任意の数のエントリの作成者になることができます。一対多ですよね?問題は、各エントリに多くのユーザーが存在する可能性があるという事実から生じます。-_-;

ご想像のとおり、配列を使用してこれを行うのは面倒であるだけでなく、愚かなことでもあります。特に誰かが 2000 エントリを蓄積できた場合はなおさらです。追加のテーブルを作成する必要があるかもしれないと予想していましたが、いくつかのリソースはそれを示唆しているように見えますが、リソースは私が望んでいたほど明確ではありません. 投稿のすべてのユーザーを取得する必要があり、別の場所では、ユーザーのすべての投稿を取得する必要があります。

誰かがこれを行う最善の方法を説明できますか? (もちろん配列を使用せずに= p)

4

2 に答える 2

3

3つのテーブルを作成する必要があります。

  • ユーザー(主キー= id)
    • id
    • 名前
    • ..。
  • エントリ(主キー= id)
    • id
    • 文章
    • ..。
  • userentry(主キー=複合キーuser、entry)
    • ユーザー
    • エントリ

エントリユーザーを取得したい場合は、

SELECT
  user.*
FROM
  userentry
INNER JOIN
  user
ON
  userentry.user = user.id
WHERE
  userentry.entry = [your entry-id]

ユーザーのすべてのエントリを取得するには、その逆を実行します。

SELECT
  entry.*
FROM
  userentry
INNER JOIN
  entry
ON
  userentry.entry = entry.id
WHERE
  userentry.user = [your user-id]
于 2012-11-07T11:22:51.273 に答える
2

これを行うための最良の方法は、3つのテーブルを用意することです。

ユーザー:

  • Id
  • Name
  • ..。

投稿:

  • Id
  • PostName
  • ..。

UserPosts:

  • Id代理キー、
  • UserId
  • PostId

次に、投稿のすべてのユーザーを取得します

SELECT u.*
FROM users u 
INNER JOIN posts p ON u.id = p.userid
WHERE p.id = apostid

ユーザーのすべての投稿を取得するには:

SELECT p.*
FROM posts p 
INNER JOIN users u  ON u.id = p.userid
WHERE u.id = auserid
于 2012-11-07T11:22:02.770 に答える