簡體   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