database - MySQL关系数据库中选择数据时出现空集

标签 database mysql relational-database

我有一些关系型 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/

相关文章:

mysql - GROUP BY 的条件给了我一些真实结果

mysql - 如何在sequel pro中查询具体值?

mysql - 从同一台服务器上运行的多个数据库获取记录?

mysql - 针对多用户 Web 应用程序的高效 MySQL 数据库设计

Php - 批量创建客户

database - 连接两个表

sql - Postgres 9.x - 有没有办法避免将数据库连接信息硬编码到 View 中?

php - 连接尝试失败,连接方未正确响应

mysql - 如何使用特定条件进行别名 sql 查询

php mysql 时间戳