0

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

我有一张叫桌子product和一张桌子country。在这个产品表上,我有一个名为CountriesIdid 的列1,2,3,4

我需要创建一个存储函数,当我在产品表上进行选择时,我可以将 CountryId 列中返回的 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;

预期结果:美国、日本、中国国家

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

谢谢!

4

2 回答 2

1

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

从表中删除countryIdsProduct并创建一个新表CountryProduct来存储表之间的关系。例子:

CREATE TABLE CountryProduct
(
   countryId INT NOT NULL,      `
   productId INT NOT NULL,
   PRIMARY KEY (countryId, productId) 
);
于 2012-11-27T14:04:24.103 回答
0

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

谢谢大家。

于 2012-11-29T16:44:54.987 回答