2016-04-05 8 views
1

私は問題を抱えています。MySQL - LIKEとNullで選択

クライアントのリストとそのエージェントに通知する必要があります。

しかし、多くのクライアントにはエージェントがいませんでした。

を(とADMは、データを挿入します)その後、私のSELECT retuns:

============= 
CLIENT - AGENT 
ABC INC - MARK 
DEF INC - MARK 
GHI INC - JOHN 
YXZ INC - NULL 
--------------- 

ADMは、いくつかのエージェントのクライアントのみを選択するために、 "検索" エンジンを持っています。

と私の選択がある:私はLIKEを使用する場合

SELECT 
CLIENTS.ID AS CLIENT, CLIENTS.NAME AS NAME, AGENTS.NAME AS AGENT FROM CLIENTS 
LEFT JOIN AGENTS ON AGENTS.CLIENTID = CLIENTS.ID 
WHERE CLIENTS.NAME LIKE '%"&CLIENTNAME&"%' AND AGENTS.NAME LIKE '%"&AGENTNAME&"%'" 

%%彼らはすべてのエージェントをもたらします。 私は%のMARK%のように使用すると、彼らは私が.. "NULL" エージェントを持っていた

そして私もこの情報を必要といけない%% LIKEとMARK

WITHすべてのエージェントを持って来るけど..

NULLを持って任意のアイデア?

私はClassic ASPで作業しています。

+0

その状態をスキップするだけです 'LIKE' %% '' –

答えて

3

あなたは、以下のようなものを追加する必要があります:あなたはこのようなあなたのクエリを変更する必要が

... AND (AGENTS.NAME LIKE '%"&AGENTNAME&"%' OR AGENTS.NAME IS NULL)" 
+0

こんにちは@ 100011あなたの時間と助けのために、最初にすべてのtksの1。素晴らしい、エレガントで輝かしいソリューション!完璧に動作します!私の命を助けて!たくさんの!!!!!! – DANIEL

+0

大歓迎です!私が間違っていないなら、私は同じ問題に陥った。なぜデータが失われるのかを理解するのに時間がかかりました。それから問題が見つかりました。 – 1000111

0

はNULLを含めるために、追加の句を追加

SELECT 
CLIENTS.ID AS CLIENT, CLIENTS.NAME AS NAME, AGENTS.NAME AS AGENT FROM CLIENTS 
LEFT JOIN AGENTS ON AGENTS.CLIENTID = CLIENTS.ID 
WHERE CLIENTS.NAME LIKE '%"&CLIENTNAME&"%' AND (AGENTS.NAME LIKE '%"&AGENTNAME&"%'" OR AGENTS.NAME IS NULL) 
0

:括弧内

....WHERE IFNULL(CLIENTS.NAME,'') LIKE '%%'...

+0

あなたの時間と助けのためにたくさんの@ md-khairul-hasan tks!私はこれを試してみます - しかし - このクエリでは、私はすべてのエージェント+ NULL(私にとっては大丈夫です)を受け取ります - しかし、私は "MARK"または "JOHN"でエージェントのリストが必要な場合 - 私もNULLを受け取りますか? – DANIEL

+0

はい、もちろんNULL値も含まれます –

+0

こんにちは、私の問題です - "Null list"には多くのレジスタがあります。 "MARK"によるADMフィルタは2 " MARK "しかし20.000のヌル..:D ..最高の解決策は@ 1000111の投稿です。とにかく、私とあなたの知識を分かち合うためにloooooooootを付ける。 – DANIEL