繁体   English   中英

使用三个表的SQL SELECT语句

[英]SQL SELECT Statement Using Three Tables

我试图编写一条SQL Select语句,以将一些数据从Sybase环境移植到MongoDB环境,而我只是想弄清楚涉及三个不同表的正确语法。

基本上我需要做的是在两个表上进行INNER JOIN,然后对第三个表进行匹配检查。 这三个表名称分别是“ ar_notes”,“ customer_service_xref”和“ service_notes_details”

这是我尝试的:

SELECT * FROM ar_notes arn
      LEFT JOIN customer_service_xref csx ON arn.customer_service_xref_id = csx.id_number
      WHERE arn.visit_date = service_notes_details.date_of_visit

这行不通。 我得到一个相关错误。

涉及三个这样的表时,语法应该是什么样?

您说过您需要在三个表之间建立一个INNER JOIN,但是您的查询在两个表之间进行了LEFT JOIN,并尝试在WHERE子句中进行另一个联接,而不在FROM子句中引用该表。

只需解决您的查询:

SELECT * 
FROM service_notes_details snd, ar_notes arn
INNER JOIN customer_service_xref csx ON arn.customer_service_xref_id = csx.id_number
WHERE arn.visit_date = snd.date_of_visit

这是您在当前SQL语法中应该使用的:

SELECT * 
FROM ar_notes arn
INNER JOIN customer_service_xref csx ON arn.customer_service_xref_id = csx.id_number
INNER JOIN service_notes_details ON arn.visit_date = service_notes_details.date_of_visit

需要明确的是,这只会在ar_notes中返回在customer_service_xref (由customer_service_xref_id连接)和service_notes_details (由visit_date连接)中具有相应值的行。 即使没有匹配的customer_service_xref_id ,使用LEFT JOIN原始查询也会从ar_notes返回行。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM