2016-04-19 10 views
0

私は2つの条件を満たすレコードを返すことになっているクエリの以下のコードを作成した:ネストされた論理積クエリ

1- IDは1に等しい#7

2-病に等しいです単一引用符の間に書かれた疾患

私はこのクエリを適用しているID = 7のレコードは、 "病気"属性の値としてクエリに記載されている病気のいずれも持っていないので、クエリは結果としてレコードを返すべきではありません。クエリの結果としてID = 7のタプルを返しています。私のコードの問題点は何ですか?私は(||)を単語(OR)に置き換えようとしましたが、私はまだ同じ結果を得ています。

SELECT * 
FROM patients 
WHERE disease = ('migraine' || 'stroke' || 'concussion' || 'down_syndrome' || 'epilepsy' || 'autism' || 'hydrocephalus' || 'dyslexia' || 'dystonia' || 'aphasia' || 'coma' || 'aneurysm' || 'batten_disease' || 'brain_cancer' || 'alzheimers_disease' || 'amyolrophic_alteral_sclerosis') 
AND ID = '7' 
+0

データベース(MySQLまたはOracle)は何ですか? 1つを選択するか、両方で同じ動作が見られますか?適切なタグを使用してください。 – mathguy

答えて

1

あなたは

SELECT * 
FROM patients 
WHERE disease IN ('migraine', 'stroke' , 'concussion' , 'down_syndrome' , 'epilepsy' , 'autism' , 'hydrocephalus' , 'dyslexia' ,'dystonia' , 'aphasia' , 'coma' ,'aneurysm' , 'batten_disease' , 'brain_cancer' , 'alzheimers_disease' , 'amyolrophic_alteral_sclerosis') 
AND ID = '7'; 

編集のようなIN演算子を使用するためのもの:コメントあたり||は、連結演算子ではなくOR状態であるので、最終的にはあなたがすべての病気とconcatanated文字列を取得あなたが比較しようとしていること。

+0

いいえ、質問を読む... OPは、このクエリ(書かれている)は行を返さないはずだと述べていますが、そうしています。彼/彼女は理由を知りたい。あなたのアドバイスは健全ですが、質問された質問には答えません。 – mathguy

+1

@mathguy、それを指摘してくれてありがとう、何とか見逃していましたが、とにかくOPは 'IN'条件を使うことを意味しました。彼は' || 'と' OR'条件を間違えたと思います。彼の投稿されたクエリは現実には何も返さないはずです。 – Rahul

+0

@ラフル、それは働いた!どうもありがとう! – Ciba