0

私は2つのテーブル番号と割り当てを持っています。割り当てには、数値プライマリ列が外部キーとして含まれます。割り当てテーブルに存在するすべての数値を表示するビューがあります。ただし、逆のことを考えており、UN によって割り当てられている/割り当てテーブル内にない番号を探しています。NOT EXISTS を作成しましたが、結果は空白になります。構造とビューは次のとおりです。

number (table)
  NID  primary
  number

allocation (table)
  AID primary
  NID Foreign Key to number table

私のビュー構造:

CREATE VIEW vNoAllocationNumber AS
    SELECT NID 
    FROM number
    WHERE NOT EXISTS (SELECT NID
                      FROM number, allocation
                      WHERE allocation.NID = number.NID)
4

1 に答える 1

1

これを試してください:

CREATE VIEW vNoAllocationNumber AS
    SELECT NID 
      FROM number n
     WHERE NOT EXISTS (
                   SELECT 1
                     FROM allocation a
                    WHERE a.NID = n.NID
           )
         ;

左結合を利用することもできます (allocation.NID が AK を構成しない限り、この手法は UN 割り当ての NID に対してのみ機能します)。

CREATE VIEW vNoAllocationNumber AS
    SELECT NID 
      FROM number n
 LEFT JOIN allocation a ON ( a.NID = n.NID )
     WHERE a.NID IS NULL
         ;
于 2013-05-08T08:49:29.580 に答える