[英]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.