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

1つの属性に複数の値を挿入します

    セットアップから、user_idを考慮します 自動インクリメントPKです:

    $user_name = mysql_real_escape_string($_POST['user_name']);
    $user_lang = mysql_real_escape_string(implode(',', $_POST['user_lang']);
    $sql = "INSERT INTO tbl_users (`user_name`, `user_lang`) VALUES ('{$user_name}', '{$user_lang}');
    

    ただし、他の人が述べているように、おそらく3レベルのテーブルを探す必要があります:

    tbl_users_lang
    user_id    lang_id
    

    そして、次のように挿入します(たとえば、エラー処理なし、単なる提案)

    $user_name = mysql_real_escape_string($_POST['user_name']);
    $sql = "INSERT INTO tbl_users (`user_name`) VALUES ('{$user_name}');"
    mysql_query($sql);
    
    $user_id = mysql_insert_id();
    foreach ($user_lang as $lang) {
       $lang = mysql_real_escape_string($lang);
       $sql = "INSERT INTO tbl_users_lang (`user_id`, `lang_id`) VALUES ({$user_id}, '{$lang}');"
       mysql_query($sql);       
    }
    

    **編集**

    ボーナスとして、このクエリを使用すると、任意のユーザーの言語リストのコンマ区切り行をフェッチできます。興味があるかもしれないと思った:

    SELECT DISTINCT u.user_id, u.user_name, GROUP_CONCAT(l.lang_name) 
      FROM `tbl_users` as u
      LEFT JOIN `tbl_users_lang` as ul ON u.user_id = ul.user_id 
      LEFT JOIN `tbl_language` as l on ul.lang_id = l.lang_id
      -- add WHERE clause here to filter (ex : WHERE u.user_name LIKE 'John%')
    


    1. OracleのCLOB列でGROUPBYを使用するにはどうすればよいですか?

    2. 3つのテーブルからのMySQLデータ抽出-結合と最大

    3. djangoのランタイム警告

    4. 先週の月曜日から現在の日までの日付を取得するにはどうすればよいですか?