SELECT 有多个 PRIMARY KEY

SELECT with multiple PRIMARY KEY

我有3个table:

nation (name PRIMARY KEY);
city (name PRIMARY KEY, nation REFERENCES nation(name))
overflight (number, city, PRIMARY KEY (number, city))

飞越table内容如下:

AA11 city1

AA11 city2

BB22 city1

BB22 city3

等等

我只需要select飞越城市字段中没有来自某个国家的城市。

我试过:

SELECT number 
FROM overflight 
JOIN city ON overflight.city = city.name 
WHERE overflight.city NOT IN (
  SELECT name FROM city WHERE nation = some_nation
) 
GROUP BY number;

但它不起作用,因为它没有列出来自 some_nation 的城市的飞越行,但可能会发生相同的飞越在 table 中有另一行没有' some_nation 没有城市。我怎样才能只显示 some_nation 中根本没有城市的飞越?

希望我已经尽可能清楚地解释了我的问题。

编辑
这是飞越的确切内容 table:

AZ 7255 Rome
AZ 7255 Milan
AZ 608 Rome
AZ 608 New York
AA 1 New York
AA 1 Los Angeles
BA 2430 New York
BA 2430 Los Angeles

假设我想展示不飞越意大利任何城市的飞越。我需要这样的结果

AA 1 New York
AA 1 Los Angeles
BB 2430 New York
BB 2430 Los Angeles

加入表格以获取确实有您要排除的国家/地区的城市的飞越航班号码,并使用运算符 NOT IN 到 select 所有其他飞越航班:

SELECT * FROM overflight 
WHERE number NOT IN (
  SELECT o.number
  FROM overflight o INNER JOIN city c
  ON o.city = c.name
  WHERE c.nation = 'Italy'
)

参见demo
结果:

number city
AA 1 New York
AA 1 Los Angeles
BA 2430 New York
BA 2430 Los Angeles