我有一些关系型 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
如果 secondary
中没有匹配记录,则返回 s .
更新:
隐式 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
关于database - MySQL关系数据库中选择数据时出现空集,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1709270/