我有以下情况: 客户可以选择一个当前的地址,有一堆地址。
ADDRESS(ID,CLIENT_ID,...)
客户(ID,CURRENT_ADDRESS_ID,...)
一对多有明显的关系
ADDRESS [CLIENT_ID] GT; ---> CLIENT [ID]
但还有另一个一对一。我不知道这是否正确。
客户端[CURRENT_ADDRESS_ID] LT; --->地址[ID]
这应该由SQL关系完成,还是稍后在代码中完成? (示例SQL代码将不胜感激)
答案 0 :(得分:0)
客户端(ID,...)
ADDRESS(ID,...)
CLIENT_ADDRESS(CLIENT_ID,ADDRESS_ID,IS_CURRENT_ADDRESS)
答案 1 :(得分:0)
当您想要创建第三个表来链接客户端和地址时,就会出现这种情况。它看起来像这样:
地址(地址ID)
ClientAddress(AddressID,ClientID)
客户端(ClientID)
答案 2 :(得分:0)
如果客户必须选择其中一个地址将其设置为当前,则不需要第二个关系,因此您可以执行此类操作
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'
.
.
.
希望它有所帮助...