我正在尝试从4个表中获取数据,如下所示 -
tblBookId -(shelfNo,BookId)
tblBookGenDetail - (BookId,Publish,Catogary,Rating)
tblPhysicalDetails - (BookId,BookWgt,BookPages,BookDia)
tblPriceTags-(BookId,India,US,UK,Aus)
tblBookAuthorDetails - (BookId,author,firstReleased,Reprints,authorRating)
现在我正在尝试使用shelfNo获取特定书架中存在的所有书籍的数据。在tabBookId
中我正在使用此查询来获取数据 -
SELECT tblBookId.BookId ,tblBookGenDetail.* , tblPhysicalDetails.* ,
tblPriceTag.* , tblBookAuthorDetails.*
FROM tblBookId
INNER JOIN tblBookGenDetail
ON tblBookId.BookId = tblBookGenDetail.BookId
INNER JOIN tblPhysicalDetails
ON tblBookGenDetail.BookId = tblBookGenDetail.BookId
INNER JOIN tblPriceTags
ON tblPriceTags.BookId = tblBookGenDetail.BookId
INNER JOIN tblBookAuthorDetails
ON tblBookAuthorDetails.BookId = tblPriceTags.BookId
WHERE (tblBookId.shelfNo = @shelfNo);
此查询运行正常并创建所有列而没有任何错误,但它没有显示任何数据。
我不知道我是否可以使用此方法检索数据或者我想要它。但我尝试了很多方法,这是更接近解决方案。
注意 - 在我编辑它之前,没有看到星号。 我自己在这里输入所有内容,所以可能会发现一些syntex错误,但在我的代码中它工作正常。
答案 0 :(得分:1)
您的查询存在的一个问题是JOIN
到tblPhysicalDetails
表。你需要加入它的bookid。
改变这个:
INNER JOIN tblPhysicalDetails ON
tblBookGenDetail.BookId = tblBookGenDetail.BookId
要
INNER JOIN tblPhysicalDetails ON
tblPhysicalDetails.BookId = tblBookGenDetail.BookId
如果每个表中都没有所有数据,您可能还需要考虑使用OUTER JOIN
而不是INNER JOINs
。有关更多详细信息,请参阅以下链接:
答案 1 :(得分:0)
如果我是你,我不会使用所有的连接。
我通常使用的是:
$shelfno = '101';
SELECT BookId, shelfNo, Publish, Catogary, Rating, BookWgt, Bookpages, BookDia, India, US, UK, Aus, author, firstReleased, Reprints, authorRating
FROM tblBookId, tblBookGenDetail, tblPhysicalDetails, tblPriceTags, tblBookAuthorDetails
WHERE tblBookId.BookId = tblBookGenDetail.BookId
AND tblBookId.BookId = tblPhysicalDetails.BookId
AND tblBookId.BookId = tblPriceTags.BookId
AND tblBookId.BookId = tblBookAuthorDetails.BookId
AND shelfNo = '$shelfno'
但那就是我喜欢的。
顺便问一下:你知道你有'Catogary'吗?只是你知道......如果您了解它的作用,也许您可以使用它:)。如果您需要解释,我很乐意提供帮助。