我试图在一个查询中检索两组信息(图表的红色和蓝色部分).

我认为我可以使用如下所述的SQL来完成此操作,但是当TableC没有记录时,它不会返回任何内容.如果TableC没有记录,我仍然希望此查询返回蓝色区域指示的结果.

从表格A中 Select *

加入表B(A.id=B.A_id)

在(A.id=C.A_id)上加入TableC C

感谢您给我返回红色和/或蓝色部分的任何指示.预先感谢=]

推荐答案

试试这样的东西

SELECT A.* FROM TableA A
LEFT OUTER JOIN TableB B ON (A.id = B.a_id)
LEFT OUTER JOIN TableC C ON (A.id = C.a_id)
WHERE B.a_id IS NOT NULL 
  OR c.a_id IS NOT NULL

Database相关问答推荐

如何在维护数据库模型的同时从Firestore中删除文档?

使用Postgres获取带有表架构的外键

当某些 node 死亡时,mongo 副本集选举如何表现?

使用 noSQL 和 MongoDB 在数据库中存储任何类型文件的最佳方法是什么

使用 PostgresQL 判断现有列的约束

有没有办法使用 JPA 注释和 Hibernate 动态 Select @GeneratedValue 策略?

在 Oracle 中查找数据库的大小

如何将 PHP 会话数据保存到数据库而不是文件系统中?

如何将正在使用的数据库复制到django中的其他数据库?

类似 Hibernate 的 C++ 框架

什么是本体数据库?

Django中的Atomic原子操作?

我如何知道何时索引列以及使用什么索引?

为什么 HikariCP 推荐固定大小的池以获得更好的性能

如何在磁盘上布局 B-Tree 数据?

QSqlDatabase & QSqlQuery 的正确方法是什么?

在 SQL Server 中实施审计表的建议?

Windows phone 7 的本地 Sql 数据库支持

有任何使用协议缓冲区的经验吗?

从 SQLAlchemy 中的文件执行 SQL