0

次のような状況があります: クライアントが現在のアドレスを選択できる魔女からのアドレスがたくさんあります。

ADDRESS(ID, CLIENT_ID, ...)

クライアント(ID、CURRENT_ADDRESS_ID、...)

1対多の明らかな関係があります

ADDRESS[CLIENT_Id]>--->CLIENT[ID]

しかし、別の 1 対 1 もあります。それが正しいかどうかはわかりません。

クライアント[CURRENT_ADDRESS_ID]<--->ADDRESS[ID]

これは SQL リレーションで行うべきですか、それとも後でコードで行うべきですか? (サンプル SQL コードをいただければ幸いです)

4

3 に答える 3

0

クライアントがアドレスの1つを選択してそれを現在のものとして設定する必要がある場合、2番目の関係は必要ないため、次のようなことができます。

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'
.
.
.

2番目の条件を追加した場合

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'
.
.
.

それが役に立てば幸い...

于 2012-08-16T22:39:09.337 に答える
0

クライアントID、...)

アドレス(ID,...)

CLIENT_ADDRESS(CLIENT_ID, ADDRESS_ID, IS_CURRENT_ADDRESS)

于 2012-08-16T22:32:23.473 に答える
0

これは、クライアントとアドレスをリンクする 3 番目のテーブルの作成を検討したい場合です。次のようになります。

アドレス (AddressID)

ClientAddress (アドレス ID、クライアント ID)

クライアント (ClientID)

于 2012-08-16T22:32:57.530 に答える