具有两个表联接的SQL查询问题
我的SQL Server中有两个不同的表(具有两个表联接的SQL查询问题,sql,sql-server,Sql,Sql Server,我的SQL Server中有两个不同的表(Dorig和Dotes),它们通过列id\u Dotes连接在一起 我需要一个查询帮助,该查询返回Dorig的结果,列为NumeroDocRif,仅出现在表Dotes中,当此条件为真时,必须提取最后一个 dorig.id_dorig = dorig.id_dorig_evade 我尝试创建此查询,但它不能完全正常工作: SELECT dorig.Id_Dorig, dotes.NumerodocRif FROM dorig LEFT
Dorig
和Dotes
),它们通过列id\u Dotes
连接在一起
我需要一个查询帮助,该查询返回Dorig
的结果,列为NumeroDocRif
,仅出现在表Dotes
中,当此条件为真时,必须提取最后一个
dorig.id_dorig = dorig.id_dorig_evade
我尝试创建此查询,但它不能完全正常工作:
SELECT
dorig.Id_Dorig, dotes.NumerodocRif
FROM
dorig
LEFT JOIN
dotes ON dotes.id_Dotes = dorig.id_Dotes
WHERE
id_dorig IN (SELECT DISTINCT id_dorig_evade
FROM dorig
WHERE id_dotes = dorig.id_dotes)
你能帮帮我吗
非常感谢
create table dorig (id_dorig int, id_dotes int, id_dorig_evade int);
create table dotes(id_dotes int, numerodocrif varchar(50));
insert into dorig values(16934,3116,4894);
insert into dorig values(4894,1090,null);
insert into dotes values(1090,'7000079957');
SELECT d.Id_Dorig,d.id_dotes,dt.NumerodocRif
FROM dorig d inner join dorig dg
on d.id_dorig_evade =dg.id_dorig
inner JOIN dotes dt ON dt.id_Dotes = dg.id_Dotes
多利格
我爱你
数字阅历
16934
3116
7000079957
似乎你所需要做的就是将你在问题文本中所写的陈述替换为你的第二个
WHERE
子句:
SELECT dorig.Id_Dorig,dotes.NumerodocRif
FROM dorig
LEFT JOIN dotes ON dotes.id_Dotes = dorig.id_Dotes
WHERE id_dorig IN
(SELECT DISTINCT id_dorig_evade FROM dorig
WHERE dorig.id_dorig = dorig.id_dorig_evade)
欢迎使用SO,但请编辑您的问题,在当前状态下,其质量与指南不匹配,请包括样本数据、预期输出、纯文本编写的清晰逻辑,以及。同样使用
sql
标记,您也应该始终标记您的DBMS(例如Oracle、sql server),访问以获取更多信息。请共享示例数据并输出您是否只是在查找其中id\u dorig=id\u dorig\u规避
?“它工作不完全正常”并没有告诉我们任何信息。它返回的行是否太多?太少了?你有运行时错误吗?您应该显示一些示例数据、预期结果,并解释您的查询与预期的不同之处。你问这个数据库管理系统是什么?SQL请求应始终标记有问题的DBMS。您的JOIN
语句将确保只有记录将显示两个id\u注释相等的位置。因此,您已经可以从dorig
中选择相关的唯一dorig\u规避
?最后一个WHERE
子句似乎是多余的,因为id\u dotes
将作为联接的结果而相等?除非您也需要将join应用于(…)
子句中的。在这种情况下,您还需要在子查询中包含JOIN
?(子查询是(…)
语句中的部分。由于第一个JOIN
只适用于封装语句,它不适用于子查询。它不起作用。您可以共享示例数据吗?我刚刚在上面的回答中添加了它。请检查我的修订答案。它不起作用,因为“c”不是有效的吗?我没有这个查询的结果。从dorig中选择不同的id\u dorig\u规避,其中dorig.id\u dorig=dorig.id\u dorig\u规避
它返回任何结果吗?如果没有,那么dorig.id\u dorig=dorig.id\u dorig\u规避
在您的数据中永远不会为真。