【发布时间】:2016-02-18 00:52:25
【问题描述】:
我有这样的桌子
-- REGIONS
-- ==========================
-- id | name
-- ==========================
-- 1 | 'Western Europe'
-- 2 | 'United States'
-- 3 | 'United Kingdom'
-- 4 | 'Middle East and Africa'
-- 5 | 'Latin America'
-- 6 | 'Japan'
-- 7 | 'India'
-- 8 | 'Germany'
-- 9 | 'Greater China'
-- 10 | 'France'
-- 11 | 'Central and Eastern Europe'
-- 12 | 'Canada'
-- 13 | 'Asia Pacific'
和
-- Partners
-- ==============================================================================================================
-- id | first_name | last_name | org_name | email | region_id
-- ==============================================================================================================
-- 1 | 'Dick' | 'Cheney' | 'Haliburton' | 'DCheney@Haliburton.org' | 2
-- 2 | 'Warren' | 'Buffet' | 'Berkshire Hathaway' | 'WarrenBridgemaster@bershire.org' | 2
以及获取合作伙伴的相关区域名称的过程,例如
CREATE PROCEDURE GetPartnersWithRegion
AS
SELECT Partners.id,
Partners.first_name,
Partners.last_name,
Partners.org_name,
Partners.email,
Regions.name
FROM Partners INNER JOIN Regions
ON Partners.region_id=Regions.id
ORDER BY org_name ASC
现在,作为我的开发项目的一个额外要求,我有一个表,它可以与区域建立一对多的合作伙伴关系,例如
-- Destinations
-- ================================
-- id | partner_id | region_id
-- ================================
-- 1 | 1 | 1
-- 2 | 1 | 2
如果Dick Cheney 与区域Western Europe 和United States 相关联。如果可能的话,我想做的是修改GetPartnersWithRegion,使其具有用逗号分隔的这些目的地,例如
-- Results
-- =====================================================================================================================================================
-- id | first_name | last_name | org_name | email | region_name | destinations
-- =====================================================================================================================================================
-- 1 | 'Dick' | 'Cheney' | 'Haliburton' | 'DCheney@Haliburton.org' | 'United States' | 'Western Europe, United States'
-- 2 | 'Warren' | 'Buffet' | 'Berkshire Hathaway' | 'WarrenBridgemaster@bershire.org' | 'United States' | 'Latin America, 'Asia Pacific'
这可能吗?还是我应该首先以不同的方式执行此操作?
【问题讨论】:
-
注意:
Destinations不是一对多,而是多对多
标签: sql sql-server tsql database-design