Concat en MYSQL

Iniciado por marko1985, 20 Febrero 2012, 13:32 PM

0 Miembros y 1 Visitante están viendo este tema.

marko1985

Hola, tengo una consulta de este tipo

$sql="SELECT * FROM profPersonal WHERE CONCAT_WS(' ', nombre, apellido1) LIKE '%$nombreUsuario%'";

así no tengo problema, pero mi intención es añadir otro campo a la concatenación, con apellido2, sabe alguien si se puede hacer, la función concat y concat_ws de mysql no me aceptan un 3er campo, y necesitaría consultar esta nombre + apellido1 + apellido2

Gracias por adelantado

Carloswaldo

¿Estás seguro que no te funciona? Porque concat_ws sí acepta más de 3 campos para concatenar.

Código (php) [Seleccionar]
$sql="SELECT * FROM profPersonal WHERE CONCAT_WS(' ', nombre, apellido1, apellido2) LIKE '%$nombreUsuario%'";

marko1985

Segurísimo, al menos desde PHP, pero supuestamente no debería de tener ningún inconveniente, volveré a intentarlo, para asegurarme. Gracias por la información ahora estoy más seguro de que estoy metiendo la pata en algo. Sólo falta averiguar el qué.

Carloswaldo

Algún otro error debe estar ocurriendo ¿cuál es el problema que te da?

marko1985

Pues mira, si quieres te explico un poco el código para ponerte en contexto,

Tengo una tabla, con nombres, 1er apellido y 2º apellido. Hago una consulta a esta tabla con la concatenación para insertar el resultado a un array, y leerlo con jquery autocomplete.

pero ahora estoy comprobando que si hago lo mismo, que antes, es decir, concatenar con CONCAT_WS(' ', nombre, apellido1), pero con los valores CONCAT_WS(' ', apellido1, apellido2) no me chuta, cosa que no tiene sentido, me he fijado en que el campo este exactamente asi, y si que lo está, asi que ya estoy un poco mosquilla, no sé que estoy haciendo mal.

Código (php) [Seleccionar]
<?php
class Buscador{

public function __construct(){
include_once "../conex.php";
}

public function buscaUsuario($nombreUsuario){
$datos = array();

//$sql = "SELECT * FROM profPersonal WHERE nombre LIKE '%$nombreUsuario%'";
$sql="SELECT * FROM profPersonal WHERE CONCAT_WS(' ', nombre, apellido1) LIKE '%$nombreUsuario%'";

$busqued=mysql_query($sql);

while($busqueda mysql_fetch_array($busquedMYSQL_ASSOC)){
$datos[]=array("value"=>$busqueda['nombre']." ".$busqueda['apellido1']." ".$busqueda['apellido2'],
"id"=>$busqueda['id_profPers']);
}

return $datos;
}

}
?>


Así funciona perfectamente. Que mosqueante, y seguro que es la mayor chorrada del mundo.

marko1985

Solucionado:

El tema estaba en que la tabla tenía un error, es decir era correcto el concat_ws con los 3 campos, el problema era el campo apellido 2 no tenía la codificacion correcta, era diferente a la demás que estaban en UTF-8.

Gracias por ayudarme majos.

Carloswaldo

Ea! Que bueno que encontraste la solución. :)