2012-11-27 3 views
0

미친 함수를 만드는 데 도움이 필요합니다!설명과 함께 여러 ID를 대체하는 MySQL의 기능

product 테이블과 country 테이블이 있습니다. 이 제품 표에는 1,2,3,4과 같은 ID를 가진 CountriesId이라는 열이 있습니다.

제품 테이블에서 select를 할 때 CountriesId 열에서 반환 된 ID를 테이블 Country의 설명으로 바꿀 수있는 저장 함수를 만들어야합니다.

예 :

SELECT * FROM Country; 

결과 :

CountryId | CountryDescription 
1   | U.S.A 
2   | Japan 
3   | China 

SELECT * FROM Product; 

결과 :

ProductId | ProductDescription | CountriesId 
1   | Product 1   | 1,2,3 

SELECT fnIdToDescription(CountriesId) AS Countries FROM Product; 

예상 결과 : 나라 U.S.A, 일본, 중국

,536,

어쩌면 쉽게 만들 수 있지만 해결책을 찾지 못했습니다.

감사합니다.

답변

0

I는 GROUP_CONCAT()라는 함수를 발견 및 설명 열 선택 부와 GROUP_CONCAT ID 년대에()를 사용하여 해결.

감사합니다.

1

지금 DB 디자인을 변경하면 현재와 미래가 훨씬 좋아질 것입니다. 첫 번째 정규화 규칙을 위반하고 있습니다.

Product 테이블에서 countryIds 열을 제거하고 테이블 간의 관계를 저장하는 새 테이블 CountryProduct을 만듭니다. 예 :

CREATE TABLE CountryProduct 
(
    countryId INT NOT NULL,  ` 
    productId INT NOT NULL, 
    PRIMARY KEY (countryId, productId) 
); 
+1

각 제품의 모든 국가 ID를 별도의 테이블에 저장하는 것이 좋습니다. – Tom

+0

당신은 완전히 옳습니다. –

+0

해결책 juergen을 위해 고맙게 여긴다. 문제는 시스템이 이미 작동하고 있으며 현재 데이터베이스 설계를 변경할 수 없다는 것입니다. 어쩌면 두 번째 버전입니다. 이제, 내가 할 수있는 것은 실제 시나리오에 대한 해결책을 찾는 것입니다. – raddesso