2016-12-02 18 views
-8

誰かが私のためにこの要件を書くことはできますか?他のすべての条件と一緒にヌル値をロードできないようです。SQLクエリの構文チェック

- (1)いずれのアーティストも、 で80歳以上で、 が死亡したとき、50歳以下でした。

- (2)死亡した54,56歳、 - 71歳のアーティストはいませんでした。

- (3)一部のアーティストはまだ生きています。

- (4)ドイツ語と の両方 - 写真美術( '写真')に特化したアーティスト - は除外されます。

- (5)いずれのアーティストも「o」 という文字を持つ人はいません。

- (6)「ハンナ」、「ジュリア」、「フレイザー」のいずれも、最初の名前は です。

select artist_id, first_name, last_name, died - born AS age, speciality, nationality 
from simon_antiques 
where Died - born Not in (54, 56, 71, 76) 
    AND first_name NOT IN ('Hannah', 'Julia', 'Frasier') 
    AND last_name not like '%o%' 
    AND (nationality <> 'German' or speciality <> 'Photo') 
    AND (died - born between 50 and 80 or died is null) 
Order by last_name 

これは、結果がすべて読み込まれますが、まだ生きているアーティストは読み込まれません。私がブラケットから状態を取り出すと、それは他の状態に関係なく生きているすべての人を戻すでしょう。

答えて

2

WHEREの最初の句は、diedがnullでない行にのみ一致します。あなたは次のような句を並べ替えることができます:

WHERE first_name NOT IN ('Hannah', 'Julia', 'Frasier') 
    AND last_name NOT LIKE '%o%' 
    AND (nationality <> 'German' 
    OR speciality <> 'Photo') 
    AND ((died - born BETWEEN 50 AND 80 
     AND Died - born NOT IN (54, 56, 71, 76)) 
    OR died IS NULL) 

これは現在生きているものを戻すべきです。

+0

ありがとうございました。私はそれが角括弧であることを知っていた。 –