Foro de elhacker.net

Programación => 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

Código:
$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
  1. $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
  1. <?php
  2. class Buscador{
  3.  
  4. public function __construct(){
  5. include_once "../conex.php";
  6. }
  7.  
  8. public function buscaUsuario($nombreUsuario){
  9. $datos = array();
  10.  
  11. //$sql = "SELECT * FROM profPersonal WHERE nombre LIKE '%$nombreUsuario%'";
  12. $sql="SELECT * FROM profPersonal WHERE CONCAT_WS(' ', nombre, apellido1) LIKE '%$nombreUsuario%'";
  13.  
  14. $busqued=mysql_query($sql);
  15.  
  16. while($busqueda = mysql_fetch_array($busqued, MYSQL_ASSOC)){
  17. $datos[]=array("value"=>$busqueda['nombre']." ".$busqueda['apellido1']." ".$busqueda['apellido2'],
  18. "id"=>$busqueda['id_profPers']);
  19. }
  20.  
  21. return $datos;
  22. }
  23.  
  24. }
  25. ?>

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. :)