繁体   English   中英

SQL Server需要一些帮助加入,请

[英]SQL Server Need Some Help Joins , please

我有3个表A,B,C。表A和C之间有关系,而表B和C之间有关系。 A和B之间没有关系。

我真正想做的是,在C中有与B相关的记录的情况下,从B获取所有记录的列表,并赋予A的值。

如果这还不够清楚,请告诉我,谢谢

您可以正确查询类似这样的内容...

SELECT B.* FROM B
INNER JOIN C ON C.aa = B.aa
INNER JOIN A ON A.bb = C.bb
WHERE A.cc = @yourvalue

@yourvalue是您需要从B表中选择值的依据。 如果您需要匹配A的多个值,则需要更改查询位,例如:

WHERE A.cc IN (@val1,@val2,@val3....,@valNth)

在此查询中,我们使用了INNER JOIN,因此,如果仅将B与C联接,则将仅给出在两个表上都相同的记录,然后将给出在B和C中共同的记录,然后将A与C联接。然后它将给出在A和C中常见的那些记录。

因此,假设在B中有类似1,2,3的记录,在C中有2,3,4,5,而在A中有1,3,4,5

因此上述查询的输出(不应用WHERE原因)仅为1,3,因为这在所有三个表A,B,C中都是相同的。

您可以通过参考此链接获得有关sqlserver中联接的更多信息。

http://blog.sqlauthority.com/2009/04/13/sql-server-introduction-to-joins-basic-of-joins/

http://www.dotnet-tricks.com/Tutorial/sqlserver/W1aI140312-Different-Types-of-SQL-Joins.html

http://www.aspdotnet-suresh.com/2011/12/different-types-of-joins-in-sql-server.html

如果有A和C之间的关系,以及B和C之间的关系, 虽然由协会,(通过C)A和B之间的关系的简单的数学使然。

因此,您将需要将所有三个结合在一起,从A到C再到B:

SELECT B.*
FROM A
JOIN C ON A.x = C.x
JOIN B ON B.y = C.y
WHERE A.z = @z

暂无
暂无

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

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