2017-10-16 2 views
0

Ich muss einen Standardwert verwenden, wenn der Wert Null in Sql wo Bedingung wie folgt ist.Standardparameter für where Bedingung in Sql setzen

SELECT sla.incident_generated_sla from eventedge_events_sla sla where e.client_id=sla.client_id and sla.priority_id=e.priority_id 

Ich habe unter Abfrage verwendet, aber nicht funktioniert.

(SELECT sla.incident_generated_sla from eventedge_events_sla sla where e.client_id=sla.client_id and sla.priority_id=(IsNull(e.priority_id,"2"))) 
+0

Markieren Sie das DBMS (MySQL, MS SQL Server usw.), das Sie verwenden. –

+0

'COALESCE'? https://dev.mysql.com/doc/refman/5.7/en/comparison-operators.html#function_coalesce –

Antwort

0
SELECT sla.incident_generated_sla from eventedge_events_sla sla 
where e.client_id=sla.client_id and sla.priority_id=e.priority_id 

(SELECT sla.incident_generated_sla from eventedge_events_sla sla 
where e.client_id=sla.client_id and sla.priority_id=(IsNull(e.priority_id,"2"))) 

Sie haben es fast geschafft.

prüfen diese Korrektur zu Ihrer eigenen Versuch:

SELECT sla.incident_generated_sla from eventedge_events_sla sla 
    where e.client_id=sla.client_id and sla.priority_id=ISNULL(e.priority_id,2) 

Nun weiß ich nicht, was Ihr „e“ ist, aber wenn dies mit dem client_id deklariert Sie suchen, sollte es funktionieren.

Werfen Sie einen genaueren Blick auf meine Korrektur zu Ihrem ISNULL.

EDIT: Nach den Kommentaren ist diese Antwort die richtige;

SELECT 
    e.event_start_time, 
    sla.incident_generated_sla 

FROM 
    eventedge_events_sla sla 
    left outer join eventedge_events e 
    ON e.client_id = sla.client_id 
     AND isnull(e.priority_id,2) = sla.priority_id 
+0

Sonst sieht es so aus, als hätten Sie Ihr "e" nicht deklariert. - Sie können dies mit einem INNEREN VERBINDEN tun. Lassen Sie mich Ihren Tabellennamen wissen, für den "e" deklariert werden soll, und ich werde die Antwort für Sie bearbeiten. – MadsBinger

+0

# 1064 - Sie haben einen Fehler in Ihrer SQL-Syntax; Überprüfen Sie das Handbuch, das Ihrer MySQL-Serverversion entspricht, um die richtige Syntax für '2) LIMIT 0, 30' in Zeile 2 zu verwenden – abhimanyu

+0

SELECT e.event_start_time, (SELECT sla.incident_generated_sla aus eventedge_events_sla sla wobei e.client_id = sla.client_id und sla.priority_id = e.priority_id) als sla Von 'eventedge_tickets' t,' eventedge_events' e – abhimanyu

0

Es ist IFNULL, wenn es MySQL ist.

SELECT sla.incident_generated_sla 
FROM eventedge_events_sla sla 
    LEFT JOIN eventedge_events e ON e.client_id = sla.client_id 
WHERE sla.priority_id = IFNULL(e.priority_id,"2");