繁体   English   中英

此INNER JOIN SQL查询有什么问题?

[英]What's wrong with this INNER JOIN SQL query?

我有三个表,tblMembers,tblBooks和tblReviews。 这个想法是一个书评网站。

当前,只有在有书名评论的情况下才显示书名,但是我希望书名总是与之一起显示。 评论列表或文字“此标题尚未审查”。

此SQL查询有什么问题?

$sql = "
SELECT *
FROM tblBooks
INNER JOIN tblReviews
ON tblBooks.bookID = tblReviews.bookID
INNER JOIN tblMembers
ON tblReviews.userID = tblMembers.userID
WHERE tblReviews.bookID = :bookID";


$query = $odb->prepare($sql);

    $query->execute(array(":bookID" => $bookID));

    $results = $query->fetchAll();
    echo "<h1>".$results[0]['longTitle']."</h1>";
    if($results !== FALSE && $query->rowCount()>0) {
        foreach($results as $result) {
            echo "Reviewed by: " . $result['firstName'] . " " . $result['lastName'];
            echo "<br />";
            echo "Rating: " . $result['rating']."/100";
            echo "<br />";
            echo "Date: " . $result['reviewDate'] . " " . $result['reviewTime'];
            echo "<br />";
            echo "Review:";
            echo "<br />";
            echo $result['reviewText'];
            echo "<hr />";
        }
    } else { // the book has not been reviewed yet
        echo "There are no reviews for this title yet";
    }

如上所述,行echo "<h1>".$results[0]['longTitle']."</h1>"; 仅在书有评论时才执行,我想在检查书是否有评论之前获取书的详细信息。 我怎样才能做到这一点?

另外,我该如何检查哪些书还没有被审查过,并用结果填充下拉列表? -已回答:D

我怎么可以:

填充两个单独的下拉列表,一个用于已审阅的书,另一个用于尚未审阅的书(我可以执行此操作,因为我从上述问题中获得了SQL)。

要么

填充单个下拉列表,但将带有评论的书放在顶部,并用一串字符隔开,比如说“ ----------这些书尚未经过审查------- ---“,然后是尚未审查的书。 这可能吗?

SELECT *
FROM tblBooks
LEFT JOIN tblReviews
ON tblBooks.bookID = tblReviews.bookID
LEFT JOIN tblMembers
ON tblReviews.userID = tblMembers.userID
WHERE tblReviews.bookID = :bookID

无论有评论或与之相关的成员,都将退还所有书籍。

如果有评论,则将其返回;如果该评论也具有成员,则将其返回。 否则,将在与tblMembers或tblReviews相关的字段中返回NULL值。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM