sql >> データベース >  >> RDS >> Mysql

ユーザー別コンテンツ:同じ名前または結合の列を持つ2つのテーブル?

    このような状況で非常によく使用される概念は、usersテーブルとpostテーブルを用意し、それらを一意の識別子でリンクすることです。この識別子は、一意である限り、シリアル化されたID、ユーザー名、メールアドレスなど、何でもかまいません。リンクは、外部キー制約を使用して行われます。これがMySQLでどのように達成されるかは正確にはわかりませんが、Postgresでは次のように実行されます。

    CREATE TABLE users (
      id serial PRIMARY KEY,
      name text
    );
    
    CREATE TABLE posts (
      content text,
      user_id integer REFERENCES users(id) NOT NULL
    );
    

    次に、結合を使用してテーブルがマージされます。これはいくつかの方法で行うことができますが、いくつかの値を挿入した後のクロス結合を次に示します。

    @> INSERT INTO users (name) VALUES ('James');
    @> INSERT INTO users (name) VALUES ('Jones');
    @> INSERT INTO posts (content, user_id) VALUES ('Hello from James.', 1);
    @> INSERT INTO posts (content, user_id) VALUES ('Greetings from Jones.', 2);
    @> SELECT U.id AS user_id, U.name, P.content \
       FROM users U, posts P \
       WHERE U.id = P.user_id;
    
     user_id | name  |        content
    ---------+-------+-----------------------
           1 | James | Hello from James.
           2 | Jones | Greetings from Jones.
    

    MySQLのYMMVですが、上記の構造はすぐに機能すると思います。

    (編集:明確化のためにINSERTを追加)



    1. MySQL/PHP常に共通の列を持たずにテーブルを結合する

    2. MySQLのマルチスレッド?

    3. STR_TO_DATE()例– MySQL

    4. ローカルコンピュータ上のMySQLサービスが開始してから停止しました