0

これを適切に表現するのは少し難しい..

  • テーブル A には役割があります
  • 表 B は役割をアセットに結び付けます
  • 表 C は資産用です

Roles から Assets へは多対多の関係があります。

Assets の列のビット値に基づいて..その値を持つ役割にそれをマップしたいと思います。しかし、多対多の関係があるため、私は多くの役割を担っています。したがって、私が望むのは、ビット = 1 の資産が同等の役割を返す場合です。ロールの PK を重複させたくありません。重複したロールを返すクエリ (PK による) は次のようになります。

select rls.Role_ID, 
       asset.Asset_ID, 
       Asset.Is_Public

        from Roles rls
            inner join Role_Asset on rls.Role_ID = Role_Asset.Role_ID
            inner join Asset on Role_Asset.Asset_ID = asset.Asset_ID 
            where Asset.Is_Public =1

問題は、多対多の関係のために、多数のrolesIDを有効にすることです..パブリックアセットがロールに関連付けられている場合..そのロールが必要ですが、そのロールのみが必要です。ロールが多数のアセットに関連付けられていて、1 つが 1 で、もう 1 つが 0 の場合、それを返す必要があります (したがって、ロールに関連付けられているパブリック アセットがそれを返す場合)。

そしてその逆 (別名 IS_PUBLIC=0)

4

2 に答える 2