2011-02-18 228 views
0
USE Pooja 
GO 
----Create TestTable 
CREATE TABLE TestTable(RtJobCode VARCHAR(20), RtProfCode smallint,RtTestCode smallint,ProfCode smallint,TestCode smallint) 
----INSERT INTO TestTable using SELECT 
INSERT INTO TestTable (RtJobCode, RtProfCode,RtTestCode,ProfCode,TestCode) 
SELECT RtJobCode,RtTestCode,TestCode,RtProfCode,ProfCode 
FROM dbo.ResultTest,dbo.Test,dbo.Profiles 
WHERE RtTestCode=ANY(Select TestCode from dbo.Test) 

----Verify that Data in TestTable 
SELECT * 
FROM TestTable 

GO 

上面的代碼試圖從一個叫resutltest和配置文件和測試表取出的條目,SQL查詢花費很長的時間來執行

的問題是建立一個立方體的過程中我是遇到了一些數據,在所有表中都不一致,所以我嘗試了表上的連接,但由於表中包含大量的列,所以試圖使這些代碼不停地執行而不停止 而不顯示任何數據

Resulttest的Rttestcode是來自測試代碼的外鍵

+0

sry我不知道如何在論壇發帖! – Jonah 2011-02-18 16:01:54

+1

這很簡單 - 有一個「代碼」鏈接點擊。更容易,只需在每行代碼前添加四個空格。 – ryebr3ad 2011-02-18 16:03:02

+1

如果突出顯示該代碼,然後單擊「{}」按鈕,它將嘗試爲您設置代碼格式。你也可以在代碼周圍使用後退標記(`...`),或者縮進4個空格。 – 2011-02-18 16:03:35

回答

5

您的查詢非常緩慢,因爲它在ResultTest,Test和Profiles之間創建了一個笛卡爾積。您需要提供「連接」條件以將表連接在一起。

SELECT RtJobCode 
    , RtTestCode 
    , TestCode 
    , RtProfCode 
    , ProfCode 
FROM dbo.ResultTest r 
JOIN dbo.Test t 
    ON r.RtTestCode = t.TestCode 
JOIN dbo.Profiles p 
    ON r.RtProfCode = p.ProfCode 

我推測這是您正在查找的查詢。請注意將ResultTest和Test鏈接在一起的條件以及將ResultTest和Profiles鏈接在一起的條件。

0
USE Pooja 
GO 
----Create TestTable 
CREATE TABLE TestTable(RtJobCode VARCHAR(20), RtProfCode smallint,RtTestCode smallint,RtCenCode smallint,LabNo int,ProfCode smallint,ProfRate money,ProfName varchar(100),TestCode smallint,TestRate money,TestName varchar(100),TestCategory varchar(50),Cost money) 
----INSERT INTO TestTable using SELECT 
INSERT INTO TestTable (RtJobCode, RtProfCode,RtTestCode,RtCenCode,LabNo,ProfCode,ProfRate,ProfName,TestCode,TestRate,TestName,TestCategory,Cost) 
SELECT RtJobCode 
    , RtProfCode 
    , RtTestCode 
    , RtCenCode 
    , LabNo 
    , ProfCode 
    , ProfRate 
    , ProfName 
    , TestCode 
    , TestRate 
    , TestName 
    , TestCategory 
    , Cost 
FROM dbo.ResultTest 

JOIN dbo.Test 
    ON ResultTest.RtTestCode = Test.TestCode 
JOIN dbo.Profiles 
    ON ResultTest.RtProfCode = Profiles.ProfCode