2016-05-30 49 views
0

ステータスがDELでないジョブを検索しようとしているSQLクエリがあります。 ジョブズCEOは、この仕事のように、例えば多くのステータスを持つことができます:特定のフィールドがすでに存在するかどうかデータベースを確認してください。

enter image description here

だから私はDELの状態が含まれていない仕事を見つけるために、クエリを作成しようとしています。

select j.* 
from job_new j 
left join jobstat js on js.jobid=j.id 
where js.Status NOT IN('DEL') 
Group by j.ID 

しかし、このクエリでは、依然としてDELステータスのジョブが返されます。 jobstatテーブルの各行を調べ、DELが存在するかどうかを確認するクエリが必要です。

答えて

0

問題は、同じジョブに対して複数のステータスがあることです。ステータスが「DEL」でないステータスは、ステータス= 'DEL'を持つ同じジョブの他の行を考慮せずに、ステータスが「DEL」のすべての行を表示します。

これはあなたのために働く必要があります。

select j.* 
from job_new j 
left join (select jobid, sum(if(Status='DEL',1,0)) as DEL from jobstat group by jobid having DEL=0) as js on js.jobid=j.id 
Group by j.ID 

我々は唯一jobstat内の任意の行にステータス=「DEL」を持たないジョブが含まれjobstatから調製された選択に参加します。

+0

申し訳ありませんが、依然として 'DEL'のジョブを戻しています – user123456789

+0

すべきではありません。私はテーブルの例がjobstatのためにあると期待していました。あなたが投稿したテーブルの名前は何ですか?あなたが参加している他のテーブルの例を投稿できますか? – iLikeMySql

関連する問題