Mysql函数用描述替换多个id

时间:2012-11-27 13:57:02

标签: mysql function loops foreach row

我需要一些帮助来创建一个疯狂的功能!

我有一张名为product的表和一张表country。在此产品表格中,我有一个名为CountriesId的列,其中一些ID为1,2,3,4

我需要创建一个存储函数,当我在product表上做一个select时,我可以用Countries Country中的描述替换CountriesId列返回的id。

示例:

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,日本,中国

也许它可以轻松制作,但我找不到解决方案。

感谢的!

2 个答案:

答案 0 :(得分:1)

如果您现在更改数据库设计,现在和未来您将会做得更好。它违反了第一个规范化规则。

countryIds表中删除Product列,并创建一个存储表之间关系的新表CountryProduct。例如:

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

答案 1 :(得分:0)

我找到了一个名为GROUP_CONCAT()的函数,并使用ID上的子选择和描述列上的GROUP_CONCAT()来解决它。

谢谢所有。