0

ブログのアーカイブ ページを作成しようとしていますが、これもまだ作成中です。データを取得する必要がある3つの異なるMySQLテーブルがあり、そのうちの1つは他の2つとは無関係です。ここで同様の投稿を見つけましたが、PHPの経験があまりないため、変換方法を理解できませんそれは私が必要とするものです。これは 3 つの異なるクエリを実行することで簡単に実行できることはわかっていますが、サーバーに不要な負荷がかかり、ページの読み込み時間などすべてが遅くなります。

関連する 2 つのカテゴリは「ブログ」と「カテゴリ」で、3 つ目は「Brain Link」と呼ばれるブログに組み込まれた別のアプリケーション用です。

関連するテーブルの 2 つのクエリを次に示します。

    $blogQuery = mysqli_query($link, "SELECT * FROM pub_blogs ORDER BY id DESC") or die ("Could not access DB: " . mysqli_error($link));

    $row = mysqli_fetch_assoc($blogQuery);  
    $blogID = $link->real_escape_string($row['id']);
    $title = $link->real_escape_string($row['title']);
    $date = $link->real_escape_string($row['date']);
    $category = $link->real_escape_string($row['category']);
    $content = $link->real_escape_string($row['content']);

    $blogID = stripslashes($blogID);
    $title = stripslashes($title);
    $date = stripslashes($date);
    $category = stripslashes($category);
    $content = stripslashes($content);

    $catQuery = mysqli_query($link, "SELECT * FROM categories ORDER BY id DESC") or die ("Could not access DB: " . mysqli_error($link));

    $row = mysqli_fetch_assoc($catQuery);
    $catID = $link->real_escape_string($row['id']);
    $catName = $link->real_escape_string($row['name']);
    $description = $link->real_escape_string($row['descriptions']);

    $catID = stripslashes($catID);
    $catName = stripslashes($catName);
    $description = stripslashes($description);

3 番目の無関係なクエリを次に示します。

    $brainQuery = mysqli_query($link, "SELECT * FROM brain_links ORDER BY id DESC") or die ("Could not access DB: " . mysqli_error($link));

    $row = mysqli_fetch_assoc($brainQuery);
    $brainID = $link->real_escape_string($row['id']);
    $site_name = $link->real_escape_string($row['site_name']);
    $site_url = $link->real_escape_string($row['site_url']);
    $post_date = $link->real_escape_string($row['post_date']);

1 つのクエリでこれら 3 つすべてからデータを取得することは可能ですか? そうでない場合、誰かが私に2つの関連するものを結合する方法を教えてくれるどこかの方向を教えてもらえますか?

ブログ テーブルは、カテゴリ ID を「カテゴリ」列に保存して、それが属するカテゴリを識別します。

助けや提案をいただければ幸いです。

4

2 に答える 2

0

いいえ、同じクエリを使用して3番目のテーブルからデータを取得することはできません。Mysqlは、2つのテーブル間のマッピングを必要としています。

あなたはブログとカテゴリーに参加できますが、頭脳のリンクには参加できません

最初の2つのテーブルについては、次のようにします。

select * , c.id , c.name , c.descriptions from pub_blogs p  join categories c on c.id = p.category order by id desc ;  

マッピングがないため、3番目のテーブルでは結合できません。

ハッピーコーディング:)

于 2012-09-28T06:36:03.400 に答える
0

これにより、2 つのテーブルからデータが取得されます。ただし、3番目のテーブルからデータを取得できません

SELECT 
        * 
FROM pub_blogs 
LEFT JOIN categories on categories.id = pub_blogs .category
ORDER BY id DESC

3 番目のテーブルは、他のテーブルへのリンクを作成できないため、取得できません。テーブル構造を変更すれば、それを行うことができます。

于 2012-09-28T06:22:15.377 に答える