2012-02-23 13 views
0

私は2つのテーブルを持っていますが、私はこの2つのテーブルを結合する選択クエリを書く必要がありますが、私はこの2つのテーブルの間に条件付き結合が何か分かりません?テーブル間の条件付きJOIN?

何らかの体は何であると言うことができますか?

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

は、なぜあなたは使用することはできません '... TABLE1がcondition' ON TABLE2のJOIN FROM? –

+1

テーブルはどのように関連していますか?どちらのテーブルにも、どのフィールドを一緒に参加させることができるフィールドがありますか? –

+0

可能な複製:http://stackoverflow.com/questions/5171788/sql-conditional-join – heikkim

答えて

2

:あなたはこのように参加することができますあなたの場合には、テーブルが列コード、NameOfCodingSystemと名前と関連していると仮定すると


関係がある。多くの情報を提供していないので、おそらく3つのフィールドが結合されている可能性があります。

  • NameOfCodingSystem VARCHAR(64)
  • 名VARCHAR(64)
  • コードVARCHAR(64)

だから、技術的にはこれらの方法のクエリ1を書くことができます:

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 

ORあなたは私の提案はJOINs上に勉強するだろう

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 

同時にすべてのフィールドに参加することができます。ここではいくつかのリソースがありますが、インターネット上でたくさんあります

3

彼らはいくつかの種類の関係を持っている場合にのみ、適切にこれらの2つのテーブルを結合することができます。

いくつかの情報についてTHIS ARTICLEをチェックしてください。あなたがその場に参加する必要がありテーブルを結合する場合

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

+0

@itroだからこそ、私はSQLクエリにも答えました。 –

関連する問題