如何创建从多个未链接的表中提取数据的存储过程我该怎么办

时间:2009-02-02 12:32:04

标签: sql sql-server-2005

我需要创建一个存储过程,从多个没有链接的表中提取数据。基本上我有一些没有链接的表,我需要做的就是从所有这些表中提取所有数据

请帮助我的生活取决于此

6 个答案:

答案 0 :(得分:2)

只做几个选择?

select * from MyTable1;
select * from MyTable2;
select * from MyTable3;

然后,您可以从调用代码访问每个表。我会举一个关于如何做到这一点的例子,但是你没有提供关于你打电话给哪种语言的任何细节。如果我的生活依赖于它,我会包含的细节:)

如果你的意思是你在几个表中都有行,并且想要将它们全部拉回来,那么你可以通过执行UNION来实现。

答案 1 :(得分:0)

“没有联系”是什么意思?它们是否在同一个sql server实例上? 如果是这样,只需从完整的模式名称中选择。

例如

从database1.dbo.table中选择* 从database2.dbo.table中选择*

答案 2 :(得分:0)

如果您想要单个结果集,则可以使用JOIN关键字,无论表是否定义了外键关系;只需指定要加入表格的列。

或者,您可以使用多个结果集,只有多个SELECT语句。

答案 3 :(得分:0)

您的问题不明确,但如果您尝试从某些表中提取某些内容然后将其返回给用户,可以执行以下操作:

CREATE PROCEDURE spMyTestProc 
AS

        DECLARE @F1 int
        DECLARE @F2 int
        DECLARE @F3 int
        DECLARE @f4 char(10)

        SELECT @f1 = FIELD1 from MYTABLE1

        SELECT @F2 = FIELD2 FROM MYTABLE2

        SELECT @F3 = FIELD3, @F4=FIELD4 FROM MYTABLE3


    /* NOW return the result set to the user, it'll come back just like a regular select */    
        SELECT @F1 AS F1, @F2 AS F2, @F3 AS F3, @F4=F4

答案 4 :(得分:0)

是否存在主键或外键不会阻止您加入表。 (它不会特别快,但你可以这样做。)它们不存在于单独的数据库实例中。

您说您的数据库没有链接。由此,我必须推断出您正在编写存储过程的数据库可能无法访问第二个数据库;如果是这样的话,你无论如何都无法访问它。您需要使用Enterprise Manager添加指向第二个数据库的链接。

完成后,您可以使用其架构名称引用第二个数据库中的表,如下所示:

SELECT *
FROM foo.employees

其中foo是架构名称。

祝你好运。

答案 5 :(得分:0)

SELECT Field1, Field2, Field3 FROM Table1 
UNION ALL
SELECT F1, F2, F3 FROM Table2 
UNION ALL 
SELECT Fld1, Fld2, Fld3 FROM Table3;

这会将所有三个表中的所有数据拉入单个输出。 检查其他表字段是否与第一个表的类型匹配,您就可以开始使用了。