2016-06-29 7 views
0

Ich möchte id_thread Spalten auswählen, no_tlp und nama (Kontaktname)Wie mit IF-Klausel in mysql über Abfrage SELECT

Aber nicht alle Zahl sind speichern auf tb_contact (zB: sms addres von SMS-Gateway, sie haben einen Wert auto Name)

So IF nama = NULL setzen sie den 'nama' = 'no_tlp'

SELECT 
    id_thread, no_tlp, 
    IF(tb_contact.`nama` = 'NULL' THEN SET nama = no_tlp) AS nama 
FROM 
    tb_sms 
LEFT JOIN 
    tb_contact ON tb_sms.`no_tlp` = tb_contact.`no_tlp` 
GROUP BY 
    id_thread ASC 

das ist meine Abfrage ist, aber es hat nicht funktioniert,

Jemand mir helfen, diese bitte

+0

Sie müssen zwei SQL-Abfragen verwenden, einen für Wählen Sie das Feld, die Sie vergleichen wollen, dann in einem boolean var wahr oder falsch speichern, schließen, dass die Verbindung und finaly wenn diese var wahr oder falsch ist, etwas zu tun mit der zweite Abfrage (in diesem Fall ein Update). (Ich meine, Sie müssen 2 in Ihrer Logik Sprache, zum Beispiel PHP) – JoelBonetR

+0

benötigen Sie den korrigierten Wert gespeichert werden, oder benötigen Sie nur die richtige Ausgabe von Ihrer Abfrage? – wau

Antwort

0

Versuchen;)

SELECT id_thread, tb_contact.`no_tlp`, IF(tb_contact.`nama` IS NULL, tb_contact.`no_tlp`, tb_contact.`nama`) AS nama 
FROM tb_sms 
LEFT JOIN tb_contact 
ON tb_sms.`no_tlp` = tb_contact.`no_tlp` 
GROUP BY id_thread ASC 

Oder COALESCE wie verwenden:

SELECT id_thread, tb_contact.`no_tlp`, COALESCE(tb_contact.`nama`, tb_contact.`no_tlp`) AS nama 
FROM tb_sms 
LEFT JOIN tb_contact 
ON tb_sms.`no_tlp` = tb_contact.`no_tlp` 
GROUP BY id_thread ASC 
+0

danke, die erste Abfrage nützlich – jojodog

0

Bitte versuchen Sie diese SQL-Abfragen.

SELECT id_thread, no_tlp, CASE WHEN tb_contact.`nama` = 'NULL' THEN no_tlp END AS nama 
FROM tb_sms 
LEFT JOIN tb_contact 
ON tb_sms.`no_tlp` = tb_contact.`no_tlp` 
GROUP BY id_thread ASC