我有以下情况:有一堆地址来自女巫客户可以选择一个当前的。
地址(ID,CLIENT_ID,...)
客户(ID,CURRENT_ADDRESS_ID,...)
一对多有明显的关系
地址[CLIENT_Id]>--->CLIENT[ID]
但也有另一个一对一。我不知道这是否正确。
客户[CURRENT_ADDRESS_ID]<--->地址[ID]
这应该由 SQL 关系完成,还是稍后在代码中完成?(示例 SQL 代码将不胜感激)
我有以下情况:有一堆地址来自女巫客户可以选择一个当前的。
地址(ID,CLIENT_ID,...)
客户(ID,CURRENT_ADDRESS_ID,...)
一对多有明显的关系
地址[CLIENT_Id]>--->CLIENT[ID]
但也有另一个一对一。我不知道这是否正确。
客户[CURRENT_ADDRESS_ID]<--->地址[ID]
这应该由 SQL 关系完成,还是稍后在代码中完成?(示例 SQL 代码将不胜感激)
客户(ID,...)
地址(ID,...)
CLIENT_ADDRESS(CLIENT_ID,ADDRESS_ID,IS_CURRENT_ADDRESS)
当您想要考虑创建第三个表来链接客户和地址时,就会出现这种情况。它看起来像这样:
地址 (AddressID)
客户端地址(地址 ID、客户端 ID)
客户 (ClientID)
如果客户端必须选择其中一个地址将其设置为当前地址,则不需要第二个关系,因此您可以执行以下操作
SELECT Client.ID ClientID, Address.ID AddressID,
CASE WHEN Client.Current_Address_Id = Address.ID THEN 'Current Address' ELSE '' END Current
FROM Client LEFT JOIN Address ON Client.ID = Address.Client_ID
你会得到类似的东西
ClientID | AddressID | Current
1 20 'Current Address'
1 35
1 15
2 18 'Current Address'
.
.
.
如果添加第二个条件
SELECT Client.ID ClientID, Address.ID AddressID,
CASE WHEN Client.Current_Address_Id = Address.ID THEN 'Current Address' ELSE '' END Current
FROM Client LEFT JOIN Address ON Client.ID = Address.Client_ID AND Client.Current-Address_ID = Addres.ID
你会得到类似的东西
ClientID | AddressID | Current
1 20 'Current Address'
2 18 'Current Address'
.
.
.
希望能帮助到你...