私は 2 つの別個のテーブルを持っています。最初のテーブルは明らかに投稿されたブログを保持する「ブログ」です。2 番目のテーブルは、ブログに投稿されたすべてのコメントを保持する「b_comments」です。各ブログには一意の ID があり、それに応じて各コメントと共に保存されます。
現在、2 つの個別のクエリを使用して、完全なブログ投稿とそれに付随するすべてのコメントの両方を取得しています。JOIN
これら 2 つのテーブルをまとめて、ブログ投稿全体とそれに付随するすべてのコメントを 1 つのクエリで取得する方法はありますか?
JOIN
MySQL のまたは関数を使用する必要がなかったUNION
ので、これが可能かどうかはわかりません。
それが役立つ場合、これが私の2つのクエリです。
$getBlog = $link->query("SELECT * FROM blogs WHERE blog_id = '" .$blogID. "'");
$getComments = $link->query("SELECT * FROM b_comments WHERE blog_id = '".$blogID."' ORDER BY date DESC")
編集:これは、私がやろうとしていることをよりよく理解するのに役立つコードです:
//get blog posts
$blogID = intval($_GET['id']);
$sql = $link->query("SELECT * FROM blogs WHERE blog_id = '" .$blogID. "'");
$row = mysqli_fetch_assoc($sql);
$blogTitle = $link->real_escape_string($row['blog_title']);
$pubDate = $link->real_escape_string($row['pub_date']);
$blogCat = $link->real_escape_string($row['category']);
$blogAuthor = $link->real_escape_string($row['author']);
$blogImage = $link->real_escape_string($row['image']);
$blogContent = $link->real_escape_string($row['content']);
//get comments
$getComments = $link->query("SELECT * FROM b_comments WHERE blog_id = '".$blogID."' ORDER BY date DESC");
if(!($getComments->num_rows > 0)) {
echo "<div id='commentArea' style='display: none;'>";
echo "</div>";
} else {
echo "<div id='commentArea'>";
while($comRow = mysqli_fetch_assoc($getComments)) {
$commentID = $link->real_escape_string($comRow['id']);
$comAuthor = $link->real_escape_string($comRow['user_name']);
$comDate = $link->real_escape_string($comRow['date']);
$comContent = $link->real_escape_string($comRow['content']);
$comDate = date("F jS, Y H:ia", strtotime($comDate));
これらの変数を使用して、データを HTML ページにエコーアウトしています。