也许我为什么找不到解决方案是因为我不知道我在找什么!希望我可以解释一下足够的答案。我有3个表格(1个视图和2个表格)。该视图具有我需要的所有细节,我们称之为用户表。表2 & 3包含用户的最后一次登录(2个独立系统)。我希望结果集在视图中显示每个用户,并且每个表的最后一次登录2 & 3.我在雇员ID上匹配。我遇到的问题是表2 & 3没有列出每个员工ID,因为他们从未登录过。因此,如果我内部连接表1 & 2,结果集不会显示视图中的所有用户,只是匹配的用户。但是,我需要返回视图中的所有用户,并且如果用户从未登录(员工ID不在表2中),请将其填入空白或任何其他文本。从多张表格返回空结果
0
A
回答
1
请勿使用INNER
连接。改用OUTER
加入
例如(表和列名都是虚构..)
SELECT
u.*, t1.logindate, t2.logindate
FROM
usertable u
LEFT OUTER JOIN table1 t1 ON u.id = t1.uid
LEFT OUTER JOIN table2 t2 ON u.id = t2.uid
内部连接返回行只有当两个表中至少有一行匹配连接条件。 内部连接消除与其他表中的行不匹配的行。
外连接,但是,从FROM子句中提到的表或视图中的至少一个返回所有行,只要这些行符合任何WHERE或HAVING搜索条件。
从左外部连接引用的左表中检索所有行,右外部连接中引用右表中的所有行。两个表中的所有行都在完整的外连接中返回。
0
你要找的是所谓left outer join.
事情是这样的:
select u.*, s1.*, System2Login.*
from users u
left outer join System1Login s1 on u.EmployeeID = s1.EmployeeID
left outer join System2Login s2 on u.EmployeeID = s2.EmployeeID
应在users
表中返回所有行,从系统1和系统2的数据(如果有的话) 。
0
SELECT <whatever columns you need>
FROM Table1 t1
LEFT OUTER JOIN Table2 t2
ON t1.employeeID = t2.employeeID
LEFT OUTER JOIN Table3 t3
ON t1.employeeID = t3.employeeID
0
您正在描述什么是“外连接”。使用LEFT OUTER JOIN
(或RIGHT)而不是INNER JOIN
,即使第二个表中没有匹配,第一个表的结果也会出现。
相关问题
- 1. 返回空结果?
- 2. 从多个表中选择返回空结果
- 3. 从单一的表中返回结果由我多少结果
- 4. 结果从codeigniter模型返回空
- 5. 空白表返回mysql_num_rows($结果)= 1
- 6. mysqli_query()返回整个表的空结果
- 7. TAPI lineGetCallInfo返回空结果
- 8. PHP bind_result返回空结果
- 9. XMLPullParser返回空白结果
- 10. .split()返回空结果
- 11. ActiveRecord paginate返回空结果
- 12. php结果返回空
- 13. LDAPContext.search()返回空结果
- 14. ajax返回空结果ie10
- 15. PDO返回空结果
- 16. scrapy mysql返回空结果
- 17. Spacy返回空结果
- 18. urllib.read()结果返回空值
- 19. SCardGetCardTypeProviderName返回空结果
- 20. AlAssetLibrary返回空结果
- 21. .getField()返回空结果
- 22. pdo cassandra返回空结果
- 23. NodeJs Mysql返回空结果
- 24. 在表格提交后返回结果
- 25. 正则表达式格式返回空结果 - C#
- 26. 返回从一行多个结果
- 27. 从方法中返回多个结果
- 28. 从.next()返回多个结果() - jQuery
- 29. 通过Spring JdbcTemplate连接多个表返回空结果
- 30. 返回多个json结果
宾果!奇迹般有效 – user1188241