Условное СОЕДИНЕНИЕ между таблицами? - PullRequest
0 голосов
/ 23 февраля 2012

У меня есть две таблицы, и я должен написать запрос на выборку, который объединит эти две таблицы, но я не знаю, что такое условное соединение между этими двумя таблицами?

Может ли какое-то тело сказать, что есть?

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,

)

Ответы [ 2 ]

3 голосов
/ 23 февраля 2012

Вы можете правильно соединить эти две таблицы только в том случае, если они имеют какое-либо отношение.

Проверьте ЭТУ СТАТЬЮ для получения дополнительной информации.


Предполагая, чтов вашем случае таблицы связаны со столбцами Code, NameOfCodingSystem и Name, которые вы можете сделать следующим образом:

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
2 голосов
/ 23 февраля 2012

При объединении таблиц вы должны объединять поля, которые связаны между собой.Поскольку вы не предоставили много информации, похоже, у вас есть 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 

ИЛИ

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.Вот некоторые ресурсы, но в Интернете их достаточно:

...