我有一个存储书籍的BOOK表,以及一个存储任意两本书的相似度值的SIMI_BOOK表。以下是2个表格使用的密钥。
BOOK:bid btitle
SIMI_BOOK:bid1 bid2相似度
我需要一个可以获取有关OTHER书的所有信息的连接查询。
例如,当用户访问特定图书页面(bookA)时,它可以使用bid1 = bookA或bid2 = bookA获取SIMI_BOOK中的所有图书,然后分别使用BOOK加入bid2或bid1以获取有关该图书的信息。其他书。
关于如何实现这一点的任何想法?
提前谢谢。
答案 0 :(得分:1)
你可以尝试类似的东西:
SELECT * (or what you need)
FROM SIMI_BOOK JOIN BOOK ON (BOOK.bid = SIMI_BOOK.bid1)
WHERE SIMI_BOOK.bid2 = nnn (your primary book id)
UNION
SELECT * (or what you need)
FROM SIMI_BOOK JOIN BOOK ON (BOOK.bid = SIMI_BOOK.bid2)
WHERE SIMI_BOOK.bid1 = nnn (your primary book id)
答案 1 :(得分:1)
怎么样:
SELECT b2.*
FROM Book B2
JOIN Simi_Book SB ON SB.Bid2 = B2.Bid AND SB.Bid1 = ?
UNION
SELECT b1.*
FROM Book B1
JOIN Simi_Book SB ON SB.Bid1 = B1.Bid AND SB.Bid2 = ?
两个查询中只有一个会返回一个值 - 除非您在Simi_Book表中有两个行(Bid1 = X,Bid2 = Y)和(Bid1 = Y,Bid2 = X)。 '?'占位符是您拥有的图书ID的值;相同的值应该提供两次。
答案 2 :(得分:0)