2 つのリンク テーブルによってリンクされている 2 つのテーブル間にエンティティ関係を設定できるかどうかを調べようとしています。それが可能かどうかさえわかりません。
書店のデータベースを想像してみてください。あり、テーブルBooks
があります。これらのテーブルは、(本が複数のセクションにある場合があるため、多対多)Sections
と呼ばれるリンク テーブルを介して接続されます。SectionBooks
ただし、ストアの各セクションにはベストセラー リストがあり、これはそのセクションの上位の本の完全なランキングではありません。これは になりますBestSellers
。
データは次のようになります。
[Books]
BookId Title Author
1000 Allegiant Roth
1001 The Book Thief Zusak
1002 Mocking Jay Collins
1003 Fan Girl Rowell
1004 I am Malala Yousafzai
[Sections]
SectionId Name
1 Fiction
2 Young Adult
[SectionBooks]
SectionId BookId
2 1000
2 1001
2 1002
2 1003
2 1004
[BestSellers]
SectionId BookId BestSellerIndex
2 1000 1
2 1001 2
2 1002 3
SectionBooks
とから両方のデータを取得できるようにするには、これをどのようにコーディングしますBestSellers
か? 私は既存のテーブルでこれを行っているので、これはデータベース優先ですが、他の実装情報がおそらく役立つでしょう。
追加情報が役立つ場合があります。以下は、セクション内のすべての本をそのセクションでランク付けして返すサンプル クエリです (ランキングがより明確になるようにs を にBestSellerIndex
変換しています)。null
999
SELECT
ISNULL(BestSellerIndex, 999) AS BestSellerIndex
SectionBooks.SectionId,
Books.Id, Books.Title, Books.Author
FROM Books
INNER JOIN SectionBooks ON Books.BookId = SectionBooks.BookId
LEFT OUTER JOIN BestSellers BestSellers ON Book.BookId = BestSellers.BookId
WHERE SectionBooks.SectionId = 2 AND (BestSellers.SectionId = 2 OR BestSellers.SectionId IS NULL)
ORDER BY BestSellerIndex, Title DESC
これにより、次のデータセットが生成されます。
BestSellerIndex SectionId BookId Title Author
0 2 1000 Allegiant Roth
1 2 1001 The Book Thief Zusak
2 2 1002 Mocking Jay Collins
999 2 1003 Fan Girl Rowell
999 2 1004 I am Malala Yousafzai