Test Foro de elhacker.net SMF 2.1

Programación => Desarrollo Web => Bases de Datos => Mensaje iniciado por: marko1985 en 20 Febrero 2012, 13:32 PM

Título: Concat en MYSQL
Publicado por: marko1985 en 20 Febrero 2012, 13:32 PM
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
Título: Re: Concat en MYSQL
Publicado por: Carloswaldo en 20 Febrero 2012, 16:05 PM
¿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%'";
Título: Re: Concat en MYSQL
Publicado por: marko1985 en 20 Febrero 2012, 16:18 PM
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é.
Título: Re: Concat en MYSQL
Publicado por: Carloswaldo en 20 Febrero 2012, 16:21 PM
Algún otro error debe estar ocurriendo ¿cuál es el problema que te da?
Título: Re: Concat en MYSQL
Publicado por: marko1985 en 20 Febrero 2012, 16:52 PM
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.
Título: Re: Concat en MYSQL
Publicado por: marko1985 en 20 Febrero 2012, 16:59 PM
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.
Título: Re: Concat en MYSQL
Publicado por: Carloswaldo en 20 Febrero 2012, 17:01 PM
Ea! Que bueno que encontraste la solución. :)