Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » Mysql »

[SOLUCIONADO] Doble concatenación en la misma sentencia

Estas en el tema de Doble concatenación en la misma sentencia en el foro de Mysql en Foros del Web. Hola a tod@s Necesito hacer una consulta a una DB que tenga dos concatenaciones en la misma sentencia SQL, una que me concatene el nombre ...
  #1 (permalink)  
Antiguo 14/11/2014, 09:57
 
Fecha de Ingreso: mayo-2014
Mensajes: 35
Antigüedad: 10 años
Puntos: 0
Busqueda Doble concatenación en la misma sentencia

Hola a tod@s

Necesito hacer una consulta a una DB que tenga dos concatenaciones en la misma sentencia SQL, una que me concatene el nombre con apellido y otra que me concatene el correo con el dominio.
nombre, apellido, correo, dominio son columnas de una tabla llamada USUARIOS.



Ya tengo la concatenacion de los nombres con los apellidos, este es el codigo que estoy utilizando para ello

-------------------------------------------------
Código MySQL:
Ver original
  1. SELECT nombre,apellido,e_mail1,dominio1, concat(nombre,' ',apellido) AS nombres
  2. FROM usuarios HAVING nombres like '%$q%'
-------------------------------------------------

Lo que necesito es que dentro de esta misma sentencia SQL, tambien esten concatenados el correo con el dominio, he probado de muchas maneras pero siempre me arroja este error

-------------------------------------------------
Warning: mysql_fetch_array() expects parameter 1 to be resource, boolean given in C:\xampp\htdocs\pagina\search.php on line 10
-------------------------------------------------

Eh buscado en diferentes paginas pero en ninguna encuentro en ejemplo de como se hace esta sentencia...



Les agradezco si me pueden ayudar con esto
Gracias...

Última edición por gnzsoloyo; 14/11/2014 a las 10:13
  #2 (permalink)  
Antiguo 14/11/2014, 10:20
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 5 meses
Puntos: 2658
Respuesta: Doble concatenación en la misma sentencia

Esto:
Cita:
Warning: mysql_fetch_array() expects parameter 1 to be resource, boolean given in C:\xampp\htdocs\pagina\search.php on line 10
No es tema de este foro. Es programación en PHP y en consecuencia OFF TOPIC aquí.
Para lo único que nos sirve es para darnos cuenta que la query tiene algun problema, que hay que verificar.

La query, por su lado, está mal escrita...

1) No se pueden uasr alias creados en el SELECT dentro del WHERE. únicamente se admiten los alias de las tablas en el FROM como referencia en el WHERE.
2) HAVING aplica a resultados globales, y LIKE a los de registro. No creo que funcione, y tampoco lo necesitas...
Código MySQL:
Ver original
  1. SELECT nombre, apellido, e_mail1, dominio1
  2. FROM usuarios
  3. WHERE CONCAT(nombre,' ',apellido) LIKE  '%$q%'

Un sano consejo: Antes de usar una query en programación asegúrate que la sintaxis sea correcta, probándolo con phpMyadmin, o bien MySQL Workbench.
La inmensa mayoría de los errores que cometen los programadores es por:
1) Sintaxis incorrectas por desconocimiento de las reglas de SQL.
2) Variables que no contienen los datos que suponen deben tener.
Como las variables de PHP no son visibles en MySQL algunas veces los errores son de dificil debuggeo para quien se inicia.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #3 (permalink)  
Antiguo 14/11/2014, 11:09
 
Fecha de Ingreso: mayo-2014
Mensajes: 35
Antigüedad: 10 años
Puntos: 0
Respuesta: Doble concatenación en la misma sentencia

Gracias gnzsoloyo ... tu aporte fue muy bueno y lo tendre en cuenta para mi desarrollo.

Probe el código y funciona a la perfección, no mencionas como hacer la otra concatenación del correo con el dominio dentro de la misma sintaxis, pero con tu código era mas facil hacerla.
Código MySQL:
Ver original
  1. --------------------------------------------------------------------
  2. SELECT * FROM usuarios
  3. WHERE CONCAT(nombre,' ',apellido) LIKE '%$q%' OR CONCAT(e_mail1,dominio1) LIKE '%$q%'
  4. --------------------------------------------------------------------

Última edición por gnzsoloyo; 14/11/2014 a las 11:17

Etiquetas: doble, php, select, sentencia, sql, tabla
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 01:32.