2016-04-05 7 views
1

Ich habe ein Problem - und einen großen Zweifel - zu lösen.MySQL - Wählen Sie mit LIKE und Nulls

Ich muss eine Liste der Kunden und sie Agenten informieren.

Aber viele Kunden hatten keinen Agenten. (Und die adm fügt die Daten)

Dann meine SELECT Retuns:

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

Die ADM haben eine "Suchen" Motor nur Kunden für einige Agenten auszuwählen.

und meine Select ist:

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&"%'" 

Wenn ich LIKE %% sie bringen alle Agenten. Wenn ich LIKE% MARK% verwenden sie bringen alle Agenten, MARK

aber .. mit LIKE %% ich nicht die "NULL" Agents hatte ..

Und ich brauche diese Informationen auch ..

irgendeine Idee, die NULL zu bringen?

Ich arbeite mit Classic ASP.

+0

Überspringen Sie einfach die Bedingung 'LIKE '%%'' –

Antwort

3

Sie müssen etwas hinzufügen wie folgt:

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

+0

Hallo @ 100011 1 vor allem für Ihre Zeit und Hilfe. Große, elegante und brillante Lösung! Funktioniert perfekt! Rette mein leben! Danke vielmals!!!!!! – DANIEL

+0

Sie sind herzlich willkommen! Wenn ich nicht falsch liege, bin ich einmal auf dasselbe Problem gestoßen. Es brauchte viel Zeit, um herauszufinden, warum Daten fehlen. Dann habe ich das Problem gefunden. – 1000111

0

in Klammern fügen Sie eine zusätzliche Klausel NULL-Werte enthalten:

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

Sie haben Ihre Abfrage wie folgt zu ändern:

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

hi @ md-khairul-hasan tks viel für deine Zeit und Hilfe! Ich werde das versuchen - aber - mit dieser Abfrage werde ich ALLE AGENTEN + NULL erhalten (ist ok für mich) - aber wenn ich eine Liste von Agenten mit "MARK" oder "JOHN" brauche - werde ich auch die NULL erhalten? – DANIEL

+0

ja natürlich wird es 'NULL' Werte zu –

+0

hi, yep .. es ist ein Problem für mich - weil die" Null-Liste "eine Menge von Registern hatte .. Wenn die ADM-Filter von" MARK "erhalten sie nur 2" MARK "aber 20.000 Nullen ..: D .. die beste Lösung ist was @ 1000111 post. Wie auch immer, es tut mir leid, dein Wissen mit mir zu teilen. – DANIEL