繁体   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