0

firebird 1.5データベースに2つのテーブルがあり、テーブルはclientとnotesです。notesテーブルには、Clientテーブルの対応するレコードごとに複数のレコードが存在する場合があります。テーブルは次のように構成されています

クライアント

Client_id   name
----------------- 
1           Sam 
2           Lee
3           Steve 
4           Linda 
5           Sue 
6           Jill 
7           Jack 

ノート

Notes_id   client_id   Note 
------------------------------ 
1          1           New
2          1           do not send
3          2           old
4          2           likes
5          4           do not send
6          5           new
7          5           Cats and Dogs
8          5           drives

ノートテーブルのクライアントにリンクされた「送信しない」という名前のノートがないクライアントテーブルからのみレコードを返すselectステートメントを実行したいと思います。したがって、上記の例では、selectステートメントはクライアントテーブルから次のレコードのみを返します。

Client_id   name
----------------- 
2           Lee
3           Steve 
5           Sue 
6           Jill 
7           Jack 

これは可能ですか?これに関する支援をいただければ幸いです。

よろしくアラン

4

1 に答える 1

1

以下は、タスクを実行する3つのクエリです。

SELECT
  c.*
FROM
  client c 
WHERE
  NOT EXISTS(SELECT * FROM notes n WHERE n.client_id = c.client_id 
    AND n.note = 'do not send')

また

SELECT
  c.*, n.client_id
FROM
  client.c LEFT JOIN
    (SELECT client_id FROM notes WHERE note = 'do not send') n
  ON c.client_id = n.client_id
WHERE
  n.client_id IS NULL

また

SELECT
  c.*
FROM
  client c 
WHERE
  NOT c.client_id IN (SELECT client_id FROM notes n 
    WHERE n.note = 'do not send')
于 2012-08-07T13:56:47.607 に答える