2012-09-28 77 views
0

我正在嘗試爲我的博客創建一個存檔頁面,該頁面也在構建中。我有三個不同的MySQL表,我需要從中拉出數據,其中1個與其他2無關。我發現了一個類似的帖子here,但看到我對PHP不怎麼有經驗,我無法弄清楚如何轉換那就是我需要的。我知道這很容易通過執行三個不同的查詢來完成,但這會給服務器帶來不必要的負載,並減慢頁面加載時間和其他一切。使用一個查詢從2個相關和1個不相關的MySQL表中獲取數據?

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

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

$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,以確定它屬於哪個類別

我明白任何幫助或建議!

+0

你可以把表結構放在sql小提琴上,並請定義第三個表列 –

回答

0

這將帶來來自兩個表的數據。如何過,從第三表中的數據不能得到

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

Ajnd第三表,你不能得到它,因爲你不能做一個鏈接到任何其他表。如果你改變你的表格結構,你可以做到。

0

不,你不能從第三表使用相同的查詢獲取數據。 Mysql想要兩個表之間的映射。

你可以加入博客和類別,但並非大腦鏈接

對於前兩個表做:

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

對於第三個表,因爲沒有映射你不能加入。

快樂編碼:)

相關問題