抱歉,如果标题不清楚 - 我只是不知道如何描述这个问题,而且我真的不太了解 SQL/根本不了解 SQL。
我正在使用我们的案例管理系统使用的数据库。在某些地方,开发商显然已经延长了时间。我正在使用联系方式(姓名、地址等),他们添加了额外的字段来处理电子邮件地址并允许家庭/工作/手机号码等...
问题是他们没有为每个单独的新字段添加一个新字段。相反,他们在 2 个不同的表中添加了几个字段 - 第一个字段包含字段名称,第二个字段包含实际数据。
第一个在名为 AdditionalAddElTypes 的表中称为 AddElTypeText - AddElTypeText 字段包括“工作电话 1”、“传真”、“家庭电子邮件”等值......(总共有 10 个不同的值,我看不到开发人员很快就会扩大这个数字)
第二个字段在名为 AdditionalAddressElements 的表中称为 AddElementText - AddElementText 然后包含实际数据,例如电话号码、电子邮件地址。
对于那些(与我不同)发现查看 SQL 代码更容易的人,它是:
SELECT
Address.AddressLine1
,AdditionalAddElTypes.AddElTypeText
,AdditionalAddressElements.AddElementText
FROM
Address
INNER JOIN AdditionalAddressElements
ON Address.AddressID = AdditionalAddressElements.AddressID
INNER JOIN AdditionalAddElTypes
ON AdditionalAddressElements.AddElTypeID = AdditionalAddElTypes.AddElTypeID
我可以使用它,但如果任何联系人有 2 个或更多“附加”元素,我会得到多行,其中大部分数据相同,但只有 AddElTypeText 和 AddElementText 的 2 列不同。
因此,任何人都可以提出任何建议将联系人“压平”成一行。我想到了类似将 AddElTypeText 和 AddElementText 连接成一个字符串字段,理想情况下在 AddElTypeText 和 AddElementText 之间有一个空格,然后是 : 或 ,分隔 AddElTypeText 和 AddElementText 对。
但是,我几乎不知道如何实现这一目标,或者完全不同的方法是否会更好。非常感谢您的任何帮助!
加里