[英]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.