SQL SELECT 使用三个表的语句

SQL SELECT Statement Using Three Tables

我正在尝试编写 SQL Select 语句以将一些数据从 Sybase 环境移植到 MongoDB 环境,我只是想找出正确的语法涉及三个不同的 tables.

基本上我需要做的是对两个 table 进行内部连接,然后对第三个 table 进行匹配检查。三个 table 名称是 "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

这行不通。我收到相关错误。

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

您说您需要在三个 table 之间进行 INNER JOIN,但您的查询在两个之间进行了 LEFT JOIN 并尝试在 WHERE 子句中进行另一个连接,而没有在 FROM 子句中引用 table。

只需修复您的查询:

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 中的 return 行在 customer_service_xref(通过 customer_service_xref_id 加入)和 service_notes_details 中具有相应的值(加入 visit_date)。您使用 LEFT JOIN 的原始查询将从 ar_notes 中提取 return 行,即使没有匹配的 customer_service_xref_id.