2016-12-09 15 views
1

私はパラメータがALLであれば、ページがALL従業員を表示するが、COMPIDそれが取得されます等しい固有IDた場合にすべきであるデータベースから企業の従業員を取得するには、URLパラメータ を読んで従業員ページ内のクエリ文字列を持っていますこの会社の唯一の従業員が、私は2つのクエリを使用していますことをやってますが、私は同じ結果を得るために一つだけのクエリを使用することができると確信してい 私のクエリ文字列パラメータは次のとおりです。SQLクエリ内で操作ロジックを使用しますか?

String CompID = HttpUtility.UrlDecode(Request.QueryString["CompID"]); 

ザ・SQLクエリは、従業員のすべてを表示するには、次のとおりです。

Query1 = "SELECT TbEmp.empID, TbEmp.fName, TbEmp.lName, TbEmp.email," + 
       " TbEmp.phoneNbr, TbEmp.compID, TbEmp.gender, " + 
       "TbEmp.address, TbComp.compName From TbEmp" + 
       " INNER JOIN TbComp on TbComp.compID = TbEmp.compID ORDER BY TbComp.compID" 

特定のcompanieのために従業員を表示するには、SQLクエリは次のとおりです。

Query2 = "SELECT TbEmp.empID, TbEmp.fName, TbEmp.lName, TbEmp.email," + 
     " TbEmp.phoneNbr, TbEmp.compID, TbEmp.gender, " + 
     "TbEmp.address, TbComp.compName From TbEmp" + 
     " INNER JOIN TbComp on TbComp.compID = TbEmp.compID WHERE TbEmp.compID = @CompID ORDER BY TbComp.compID DESC" 

は、誰かが私は1つのクエリでこれらの2つのクエリをマージするのに役立つことはできますか?

+0

Sqlクエリはjqueryと異なりますか? –

+0

はい彼らは完全に異なっていますデータベース内のアクションを実行するためにSQLクエリが使用されています.Jqueryはクライアント側でページを制御したり、Ajaxを使用してサーバー側にデータを送信したりします – abkmrad

答えて

0

シンプルなケースです。 ...あなたの@CompIDが数値であると仮定すると、あなたはゼロが「すべて」の検索を示すために送信することができます

INNER JOIN TbComp on TbComp.compID = TbEmp.compID 
WHERE (@CompID = 0) or (@CompID <> 0 and TbEmp.compID = @CompID) 
ORDER BY TbComp.compID DESC" 
+1

あなたの助けに感謝します。 – abkmrad

0

私は(asp.netでパラメータを持つストアドプロシージャを使用し、あなたのロジックを記述するためにクエリを使用することをお勧めしませんが、代わりに)。

解決方法1:

string Query1 = "SELECT TbEmp.empID, TbEmp.fName, TbEmp.lName, TbEmp.email," + 
       " TbEmp.phoneNbr, TbEmp.compID, TbEmp.gender, " + 
       "TbEmp.address, TbComp.compName From TbEmp" + 
       " INNER JOIN TbComp on TbComp.compID = TbEmp.compID " ; 

String CompID = HttpUtility.UrlDecode(Request.QueryString["CompID"]); 
if(CompID<>"") 
{ 
    Query1 += " WHERE TbEmp.compID = " + CompID //Beware : Chance of injection 
} 
Query1 +=" ORDER BY TbComp.compID"; 

解決策2:はそれがない場合@CompIDがnull渡されると仮定すると、 あなたはこれを行うことができます。

Query2 = "SELECT TbEmp.empID, TbEmp.fName, TbEmp.lName, TbEmp.email," + 
     " TbEmp.phoneNbr, TbEmp.compID, TbEmp.gender, " + 
     "TbEmp.address, TbComp.compName From TbEmp" + 
     " INNER JOIN TbComp on TbComp.compID = TbEmp.compID WHERE 
    TbEmp.compID = Isnull(@CompID, TbEmp.compID) ORDER BY TbComp.compID DESC" 
関連する問題