2017-04-14 15 views
0

二つのテーブルがありますが、最初の1列country_idcountry_namesports_iddatecountry_sportsです。第2のものはsportsであり、列がsports_id,sports_name,sports_dateである。複数のIDを1つの列に入力するにはinsertステートメントを実行する方法は? SQL文

sports_nameでフォームを投稿してスポーツのリストを選択すると、sports_nameが選択され、スポーツのIDのリストが取得され、最初のテーブル 'country_sports '

ここで、sports_idは複数のIDを持つ必要があります。例えば

insert into country_sports (country_id, country_name, sports_id, date) 
values ('', '', '', curdate()); 

例えば、データ構造は

('1', 'germany', '1, 2, 3, 4', 12-02-2017); 
+0

あなたの例では4つの別々の挿入物を用意しなければならないと思います。あなたはどのデータベースを指定していません。 – etsa

+0

@etsa、それはMYSQLデータベースです。 –

+1

ManyToMany関係を説明しています。これは、fk_country_sports_idとfk_sports_idを持つ3番目のテーブルを追加する必要があることを意味します。テーブルは、国のスポーツとスポーツの関係を示すためにあります。 –

答えて

0

はこれを試してみてくださいする必要があります:

sports_idがTHEN

BEGIN 

    SET @sportsID_list = CONCAT('''',REPLACE(REPLACE(sportsID,' ',''),',',QUOTE(',')),''''); 

    SET @ sportsID_stub = REPLACE(@sportsID_list,',',''); 

    SET @ sportsID_array_count = LENGTH(@sportsID_list) - LENGTH(@sportsID_stub) + 1; 

    SET @x = 0; 

    WHILE @x < @ sportsID_array_count DO 

      SET @x = @x + 1; 

      SET @sqlv = CONCAT('SELECT ELT(',@x,',',@ sportsID_list,') INTO @sportidobj'); 

      PREPARE v FROM @sqlv; EXECUTE v; DEALLOCATE PREPARE v; 

      SET @sqliv = CONCAT('INSERT INTO table_name (`Id`,`sportId`)VALUES (',@countryId,',',@ sportidobj',')'); 

     PREPARE spv FROM @sqliv; EXECUTE spv; DEALLOCATE PREPARE spv; 

    END WHILE;  

END; 

END NULLされていない場合IF;

これは、1つのレコードで複数のレコードをバインドするために使用される動的SQLクエリです。 必要に応じてフィールドとテーブル名を置き換えます。

関連する問題