機器レコードとそれに関連するデータを関連テーブルから取得するクエリを作成しようとしています。私は、where句内の任意の引数を渡さないとき、私もヌルレコードを含むすべてのレコードを取得し、[OK]mysqlを照会中にnull値を取得する方法
select e.Name,ec.Name as EquipmentClassName, s.Name as SiteName
from equipment e
left join site s on (e.SiteID = s.ID or e.SiteID is NULL and s.ID is NULL)
left join equipmentclass ec on e.EquipmentClassID=ec.ID
where e.id like '%' and (
(isNull(e.Name) OR e.Name= CASE WHEN COALESCE('','') = '' THEN e.Name ELSE '' END)
and (isNull(e.EquipmentClassID) OR e.EquipmentClassID= CASE WHEN COALESCE('1','') = '' THEN e.EquipmentClassID ELSE '' END)
and (isNull(e.SiteID) OR e.SiteID= CASE WHEN COALESCE('','') = '' THEN e.SiteID ELSE '' END)
)
:。私のクエリは次のようです しかし、私はパラメータのいずれかを渡すときにすべてのレコードを再度取得します。私がここで期待しているのは、フィルタリングされたデータです。
と仮定私持っている二つのレコード句、私はクラス1を渡していますので、私は二つのレコードの代わりにCLASS1含む単一のレコードを取得する必要があり Equip1、class1に、ヌル、ヌルとEqui2、サイト2
で今として。
どうすればいいですか?すなわち
EXEC equipmentData @Name='',@EquipmentClassID='',
@LocationID='',@ParentEquipmentID='',@EquipmentLevelID='',@SiteID=''
F5キーを押し、最後の行を除いて上記のコードは、あなたのneed..youごとにsinglequotesにパラメータを渡すことで、最後の行のコードを実行
タグを更新してください。 SQL ServerとMySQLでは、同じ問題に対して異なるソリューションが必要になることがよくあります。 –
タグの問題で申し訳ありません。私が選んでいるタグに注意を払っていませんでした。私の間違い – Roy
サンプルレコードとそのサンプルが生成すると予想される出力を提供できますか? SOには便利なサンプルデータを提供する便利なガイドがあります(http://stackoverflow.com/help/mcve)。私はこの質問をdownvoteしなかったので、なぜ-1のスコアを持っているのか分からない。しかし、私が推測しなければならないことは、質問を読むのが難しいため、あなたがポイントを失ったと言います。 –