2012-02-23 66 views
0

我有兩個表,我應該寫一個選擇查詢加入這兩個表,但我不知道這兩個表之間的條件連接是什麼?表之間的條件連接?

有人能說什麼嗎?

TABLE ParameterRegistration 
(
    RegistrationTime DATETIME, 
    PatiNo VARCHAR(12), 
    Source VARCHAR(64), 
    Code VARCHAR(64), 
    NameOfCodingSystem VARCHAR(64) NULL, 
    Name VARCHAR(64), 
    ValueType CHAR(2) NULL, 
    NumericValue INT NULL, 
    StringValue VARCHAR(64) NULL, 
    TextValue TEXT NULL, 
    Unit VARCHAR(64) NULL, 
    UnitCode VARCHAR(64) NULL, 
    UnitCodingSystem VARCHAR(64) NULL, 
    Remark VARCHAR(255) NULL, 
    CreateDate DATETIME, 
    CreateUserId T_USER_ID 
) 

TABLE External 
(
    ModDate DATETIME, 
    ModUserId VARCHAR(12), 
    UbMem VARCHAR(64), 
    Code VARCHAR(64), 
    Name VARCHAR(64), 
    Service VARCHAR(64), 
    NameOfCodingSystem VARCHAR(64) NULL, 

) 
+0

爲什麼你不能用'... FROM TABLE1 JOIN TABLE2 ON condition'? – 2012-02-23 13:59:19

+1

表格如何關聯?兩張表中都有哪些字段允許您將它們結合在一起? – 2012-02-23 14:00:23

+0

可能的重複:http://stackoverflow.com/questions/5171788/sql-conditional-join – heikkim 2012-02-23 14:03:36

回答

2

加盟當表,你必須參加的字段有關係。由於您沒有提供大量信息,因此您可能會加入3個字段。

  • NameOfCodingSystem VARCHAR(64)
  • 名稱VARCHAR(64)
  • 代碼VARCHAR(64)

所以,你可以在技術上編寫查詢以下列方式之一:

SELECT * 
FROM ParameterRegistration P 
INNER JOIN External E -- or LEFT JOIN, etc 
ON P.NameOfCodingSystem = E.NameOfCodingSystem 

SELECT * 
FROM ParameterRegistration P 
INNER JOIN External E -- or LEFT JOIN, etc 
ON P.Name = E.Name 

OR

SELECT * 
FROM ParameterRegistration P 
INNER JOIN External E -- or LEFT JOIN, etc 
ON P.Code = E.Code 

或者你可以在同一時間

SELECT * 
FROM ParameterRegistration P 
INNER JOIN External E -- or LEFT JOIN, etc 
ON P.NameOfCodingSystem = E.NameOfCodingSystem AND 
P.Name = E.Name AND 
P.Code = E.Code 

我的建議是上晚自習JOINs及各個領域的加盟。這裏有一些資源,但在互聯網上有很多:

3

只能適當加入這兩個表的,如果他們有某種關係。

檢查THIS ARTICLE瞭解一些信息。


假設你的情況,表與列碼,NameOfCodingSystem和名稱有關,你可以做一個加入這樣的:

select p.*, e.* from ParameterRegistration p 
inner join External e on p.Code = e.Code and 
         p.NameOfCodingSystem = e.NameOfCodingSystem and 
         p.Name = e.Name 
+0

如果你看看兩張桌子你都可以看到他們之間的關係。請看錶列名稱。 – itro 2012-02-23 14:04:44

+0

@itro,這就是爲什麼我用sql查詢來回答的原因。 – 2012-02-23 14:22:01