空集,而在MySQL关系数据库中选择数据
-
19-09-2019 - |
题
我有一些关系的MySQL数据库与几十个表...我的查询为1000英尺长,并从选择数据几乎所有的表......我也有我的“主”表,以及所有其他表指的是一。当我在我的主表中输入一行,当我创建的所有关系,为在其他表这一行我的查询工作正常。不过,如果我进入主表中的一行,并在其他地方,我得到空集。不过,我想获得至少在我的结果信息。或者,当然,这是在其他表中输入的所有信息,而不管事实,有些表没有该记录(行)的信息......
感谢您的帮助!
<强>更新强>
我不使用JOIN语法和我的查询看起来类似于这样:
$query = "SELECT a.*, b.*, c.*, d.*, e.*, f.*";
$query .= " FROM a, b, c, d, e, f";
$query .= " WHERE a.aID = b.aID";
$query .= " AND b.bID = c.bID";
$query .= " AND b.bID = d.bID";
$query .= " AND b.bID = e.bID";
$query .= " AND b.bID = f.bID";
解决方案
您的问题是现在很模糊,但最有可能是由于您使用的不是INNER JOIN
s LEFT JOIN
s的事实。
此查询:
SELECT *
FROM main
JOIN secondary
ON secondary.main_id = main.id
如果secondary
为空将返回什么。
此查询:
SELECT *
FROM main
LEFT JOIN
secondary
ON secondary.main_id = main.id
将返回的至少一个记录在main
每个记录,与NULL
s更换二次场如果在secondary
没有匹配的记录。
<强>更新强>
使用(枚举表和提供JOIN
子句中的JOIN
条件)隐WHERE
语法假定INNER JOIN
s。
假设a
被“主”表,重写查询作为这样的:
SELECT a.*, b.*, c.*, d.*, e.*, f.*
FROM a
LEFT JOIN
b
ON b.aID = a.aID
LEFT JOIN
с
ON c.bID = b.bID
LEFT JOIN
d
ON d.bID = b.bID
LEFT JOIN
e
ON e.bID = b.bID
LEFT JOIN
f
ON f.bID = b.bID
不隶属于 StackOverflow