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

MySQLとPHPを使用してデータベースにタグを保存する方法は?

    データを2つのテーブルquestionsに分割する必要があります およびtags questions_tagsを使用してそれらを関連付けます テーブルに参加します。

    CREATE TABLE questions (
      id INT UNSIGNED NOT NULL AUTO_INCREMENT,
      url TEXT NOT NULL,
      PRIMARY KEY (id)
    );
    
    CREATE TABLE tags (
      id INT UNSIGNED NOT NULL AUTO_INCREMENT,
      tag VARCHAR(255) NOT NULL,
      PRIMARY KEY (id)
    );
    
    CREATE TABLE questions_tags (
      question_id INT UNSIGNED NOT NULL REFERENCES questions,
      tag_id INT UNSIGNED NOT NULL REFERENCES tags
    );
    

    countが何であるかわかりません 元のテーブルの列はのためのものなので、スキップしました。

    上記の表を使用すると、結合を使用して、特定のタグを持つすべての質問または質問のすべてのタグを見つけることができます。

    編集

    各タグの数を取得するには、次のようにします。

      SELECT tag,
             count(*) AS c
        FROM tags
    GROUP BY tag;
    

    編集

    すべての質問のすべてのタグの数を取得するには、次のようにします。

      SELECT t.tag,
             q.question_id,
             count(*) AS c
        FROM tags AS t,
             questions_tags AS qt
             questions AS q
       WHERE t.id = qt.tag_id
         AND qt.question_id = q.id         
    GROUP BY t.id, q.id;
    

    特定のタグまたは質問のカウントのみが必要な場合は、WHEREを追加してください 条項。

    :上記のすべてのSQLはテストされていません。



    1. PHPのSQLクエリ内で一重引用符を処理するにはどうすればよいですか?

    2. MySQL変数`max_allowed_pa​​cket`が1MBに自動リセット

    3. 別の表領域を使用してクエリから表を作成する(Oracle SQL)

    4. コミットと選択の間のOracleの遅れ