簡體   English   中英

使用一個查詢從2個相關和1個不相關的MySQL表中獲取數據?

[英]Getting data from 2 related and 1 unrelated MySQL tables with one query?

我正在嘗試為我的博客創建一個存檔頁面,該頁面仍在構建中。 我有三個不同的MySQL表,我需要從中提取數據,它們中的1個與其他2個表無關。我在這里找到了類似的帖子但是由於我對PHP的使用經驗不多,所以我無法弄清楚如何轉換滿足我的需求。 我知道可以通過執行三個不同的查詢輕松地完成此操作,但這將對服務器造成不必要的負載,並減慢頁面加載時間及其他所有負載。

這2個相關類別是“博客”和“類別”,而第3個類別是針對博客中內置的稱為“ Brain Link”的其他應用程序的

這是相關表的兩個查詢:

    $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);

這是第三個不相關的查詢:

    $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']);

是否可以通過一個查詢從所有這三個數據中獲取數據? 如果不能,那么有人可以指出我的方向,告訴我如何加入兩個相關的方向嗎?

博客表將類別ID保存在“類別”列下,以標識其所屬的類別

我感謝任何幫助或建議!

這將從兩個表中獲取數據。 但是,無法從第三張表獲得數據

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

您無法獲得第三個表的Ajnd,因為您無法鏈接到任何其他表。 如果更改表結構,則可以執行。

不,您無法使用相同的查詢從第三張表中獲取數據。 Mysql需要兩個表之間的映射。

您可以加入博客和類別,但不能加入大腦鏈接

對於前兩個表,請執行以下操作:

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

對於第三張表,因為沒有映射,所以您不能加入它。

快樂編碼:)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM