2011-01-06 7 views
0

Tは「AND」と「OR」キーワードは、選択クエリで一緒にどのように使用することができますか?

SELECT * FROM tbl_docuserstatus WHERE doc_id='1' 
AND doc_midlvluser = '1' AND 
(docstatus_id != '4' OR docstatus_id != '5' OR docstatus_id != '8' OR docstatus_id != '0') 

として選択クエリを持っていますが、結果のdoesntは(docstatus_id != '4' OR docstatus_id != '5' OR docstatus_id != '8' OR docstatus_id != '0')一部ために動作可能であると思われます。ディスプレイとして、私は、クエリが動作する必要が

そのDOCID = 1とdoc_midlvluser = 1、4または5または8または0

に等しいことはないSHLD dostatus_idすべての値は、それが使用さB必要がありますどのように私を助けてください?

+0

質問はあなたが期待しているものです。どのように行動すべきか私達に教えてくれないので、あなたがそれを必要としているかどうかは分かりません。そこには構文エラーはありませんので、いくつかの情報を追加する必要があります! – jwueller

+0

ブール代数を学ぶ。興味深いだけでなく、プログラミングの際にも役立ちます(基本的に、条件があるたびに)。 – delnan

答えて

3

用途:

SELECT * FROM tbl_docuserstatus WHERE doc_id='1' 
AND doc_midlvluser = '1' AND 
(docstatus_id != '4' AND docstatus_id != '5' 
AND docstatus_id != '8' AND docstatus_id != '0') 

それとも、コードと読みする方が簡単ですので、ちょうど、ドモルガンの定理を適用します。いっその

SELECT * FROM tbl_docuserstatus WHERE doc_id='1' 
AND doc_midlvluser = '1' AND 
NOT (docstatus_id = '4' OR docstatus_id = '5' 
    OR docstatus_id = '8' OR docstatus_id = '0') 

かを、INを使用:

SELECT * FROM tbl_docuserstatus WHERE doc_id='1' 
AND doc_midlvluser = '1' AND 
    docstatus_id NOT IN ('4','5','8','0') 

に関連しますこの:https://stackoverflow.com/questions/130965/what-is-the-worst-code-youve-ever-written/311377#311377

そして、この:Is it acceptable to only use the 'else' portion of an 'if-else' statement?

+0

おかげMannn Uは右方向に役立っています –

0

あなたのOR句は、相互に排他的である:

= 4 docstatus_id場合、それは句の最初の部分に応じて有効ではありませんが、残りの部分に有効です。

おそらくあなたがいない中でdocstatus_id使用する必要があります(「4」、「5」、「8」、「0」)それはあなたが達成しようとしているものだ場合。

関連する問題