2017-04-14 1 views
0

두 테이블이 있습니다. 첫 번째 테이블은 country_id, country_name, sports_iddatecountry_sports입니다. 두 번째 것은 , sports_name, sports_datesports입니다. 내가 sports_name을 제공하여 웹 응용 프로그램에서 양식을 게시하고 스포츠의 목록을 선택하면문을 삽입하여 여러 ID를 열에 입력하는 방법은 무엇입니까? SQL 문

은, 그때 'country_sports을 스포츠의 ID의 목록을 sports_name를 선택하고 얻는 삽입 문을 작성하고 첫 번째 테이블에 넣어 싶어 '.

여기에서 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가있는 세 번째 테이블을 추가해야 함을 의미하며 테이블은 국가 스포츠와 스포츠 간의 관계를 보여줍니다. –

답변

0

이것을 시도되어야한다 :

sports_id 다음

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되지 않으면 만약;

이것은 하나의 레코드로 여러 레코드 바인딩을 삽입하는 데 사용되는 동적 SQL 쿼리입니다. 필요에 따라 필드와 테이블 이름을 바꿉니다.

관련 문제