2016-08-09 31 views
-1

Ich habe die folgende Abfrage:Wie verbinden Sie zwei Zeichenfolgen in einer SELECT-Abfrage?

SELECT 
    IF(e.business_id IS NOT NULL, b.name, SUBSTRING_INDEX(p.names, ' ', 1)) as name, 
    f.code, 
    f.total, 
    f.date 
FROM business AS b INNER JOIN entity AS e ON b.id = e.business_id 
    INNER JOIN persons AS p ON e.person_id = p.id 
    INNER JOIN transactions AS t ON e.id = t.entity_id 
    INNER JOIN bills AS bi ON t.id = bi.transaction_id 
    WHERE e.type = 2 AND t.type_id = 1; 

Wenn business_id bei entity Tabelle null ist, muss ich von der Person, einen Namen und einen Nachnamen beizutreten. Ich speichere in einem Feld namens names den Namen der Person - z.B. Steven Paul - und der in einem Feld surnames die Personen Nachname - z. Jobs Jobs.

Bis jetzt habe ich den Namen mit SUBSTRING_INDEX(p.names, ' ', 1) aber wie verbinde ich diese Zeichenfolge mit SUBSTRING_INDEX(p.surnames, ' ', 1) getrennt durch ein Leerzeichen?

+3

Haben Sie versucht, über die [String-Funktionen in MySQL] Lesen (http://dev.mysql.com/doc/refman/5.7/en/string-functions.html)? –

+0

um zwei Strings zu verbinden, sollten Sie CONCAT oder CONTACT_WS verwenden, wie zB CONCAT (tbl.firstname, "", tbl.lastname) als full_name aus der Tabelle auswählen; –

+0

Hallo, ich gehe einige meiner alten Antworten durch. Hast du es geschafft, das hier zu sortieren? – e4c5

Antwort

1

Vielleicht, was Sie wirklich suchen ist COALESCE

Gibt den ersten Nicht-NULL-Wert in der Liste aus, oder NULL, wenn es keine Nicht-NULL-Werte.

SELECT 
    COALESCE(e.business_id, CONCAT(SUBSTRING_INDEX(p.names, ' ', 1),' ', SUBSTRING_INDEX(p.surnames, ' ', 1)) ...