如何获取sql中的缺失值?

ema*_*man 3 sql

我需要帮助。

我有一个与另外两个表 t1 和 t3 相关的 sql 表 t2。

t2 有字段:

idFromt3 idFromt1 Value

1        14        text1
2        14        text2
1        44        text1
2        44        text2
3        44        text3
Run Code Online (Sandbox Code Playgroud)

我正在寻找缺少 ifFromt3 的值。我想在这个例子中找到值 ifFromt3 = 3,因为它不存在。

我正在像这个例子那样做,但它不能正常工作。

SELECT t3.idFromt3, t3.idFromt1
FROM t3 
  INNER JOIN t2 
    ON t3.LanguageMessageCodeID <> t2.idFromt2
Run Code Online (Sandbox Code Playgroud)

这是3张桌子。

CREATE TABLE [dbo].[t3](
    [t3ID] [int] IDENTITY(1,1) NOT NULL,
    [Name] [varchar](50) NOT NULL,
)

CREATE TABLE [dbo].[t2](
    [t2ID] [int] IDENTITY(1,1) NOT NULL,
    [t3ID] [int] NOT NULL,
    [t1ID] [int] NOT NULL,
)


CREATE TABLE [dbo].[t1](
    [t1ID] [int] IDENTITY(1,1) NOT NULL,
    [Name] [varchar](50) NOT NULL,
)
Run Code Online (Sandbox Code Playgroud)

更新:

数据表:http : //www.2shared.com/photo/40yY6FC-/Untitled.html

我需要一个查询,它返回表LangugageMes​​sageCodes 中所有缺失的组合。

在这种情况下:

LanguageMessageCodeID  LanguageID
3                      14
1                      47
2                      47
3                      47
Run Code Online (Sandbox Code Playgroud)

请。帮助。

问候。

Qua*_*noi 6

SELECT  *
FROM    t2
WHERE   t2.idFromt3 NOT IN
        (
        SELECT  LanguageMessageCodeID
        FROM    t3
        )
Run Code Online (Sandbox Code Playgroud)

或者

SELECT  *
FROM    t2
WHERE   NOT EXISTS
        (
        SELECT  NULL
        FROM    t3
        WHERE   t3.LanguageMessageCodeID = t2.id
        )
Run Code Online (Sandbox Code Playgroud)

或者

SELECT  t2.*
FROM    t2
LEFT JOIN
        t3
ON      t3.LanguageMessageCodeID = t2.id
WHERE   t3.LanguageMessageCodeID IS NULL
Run Code Online (Sandbox Code Playgroud)

更新:

尝试这个:

SET NOCOUNT ON
DECLARE @t1 TABLE (id INT NOT NULL PRIMARY KEY)
DECLARE @t2 TABLE (t3id INT NOT NULL, t1id INT NOT NULL, PRIMARY KEY (t1id, t3id))
DECLARE @t3 TABLE (id INT NOT NULL)

INSERT
INTO    @t1
VALUES  (14)
INSERT
INTO    @t1
VALUES  (44)

INSERT
INTO    @t2
VALUES  (1, 14)
INSERT
INTO    @t2
VALUES  (2, 14)
INSERT
INTO    @t2
VALUES  (1, 44)
INSERT
INTO    @t2
VALUES  (2, 44)
INSERT
INTO    @t2
VALUES  (3, 44)

INSERT
INTO    @t3
VALUES  (1)
INSERT
INTO    @t3
VALUES  (2)
INSERT
INTO    @t3
VALUES  (3)

SELECT  t1.id, t3.id
FROM    @t1 t1
CROSS JOIN
        @t3 t3
WHERE   NOT EXISTS
        (
        SELECT  NULL
        FROM    @t2 t2
        WHERE   t2.t1id = t1.id
                AND t2.t3id = t3.id
        )
Run Code Online (Sandbox Code Playgroud)