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
¿Estás seguro que no te funciona? Porque concat_ws sí acepta más de 3 campos para concatenar.
$sql="SELECT * FROM profPersonal WHERE CONCAT_WS(' ', nombre, apellido1, apellido2) LIKE '%$nombreUsuario%'";
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é.
Algún otro error debe estar ocurriendo ¿cuál es el problema que te da?
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.
<?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($busqued, MYSQL_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.
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.
Ea! Que bueno que encontraste la solución. :)