2016-08-09 1 views
-1

J'obtenu la requête suivante:Comment joindre deux chaînes dans une requête SELECT?

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; 

Si business_id à entity table est nul, je dois rejoindre un nom et un nom de famille de la personne. Je stocke dans un champ appelé names le nom de la personne - par ex. Steven Paul - et dans un champ appelé surnames le nom de famille des personnes - par ex. Jobs Jobs.

Jusqu'ici j'ai obtenu le nom avec SUBSTRING_INDEX(p.names, ' ', 1) mais comment joignent cette chaîne à SUBSTRING_INDEX(p.surnames, ' ', 1) séparés par un espace?

+3

Avez-vous essayé de lire sur les [Fonctions de chaîne MySQL] (http://dev.mysql.com/doc/refman/5.7/en/string-functions.html)? –

+0

pour joindre deux chaînes vous devez utiliser CONCAT ou CONTACT_WS, comme select CONCAT (tbl.firstname, "", tbl.lastname) comme nom complet de la table; –

+0

salut là-bas, en passant par certaines de mes anciennes réponses. Avez-vous réussi à trier celui-ci? – e4c5

Répondre

1

Peut-être ce que vous cherchez vraiment est COALESCE

Renvoie la première valeur non NULL dans la liste, ou NULL s'il n'y a pas valeurs non NULL.

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