我试图弄清楚是否可以在由两个链接表链接的两个表之间建立实体关系。我不确定这是否可能。
想象一个书店数据库。有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
?我正在使用现有表执行此操作,因此这将是数据库优先的,但任何其他实现信息可能会有所帮助。
额外的信息可能会有所帮助。这是一个示例查询,它将返回按其排名的部分中的所有书籍BestSellerIndex
(我将null
s 转换为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