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

[SOLUCIONADO] No me aclaro con esta sentencia

Estas en el tema de No me aclaro con esta sentencia en el foro de Mysql en Foros del Web. Hola! Llevo un poco de lío con las sentencias que utilizan 2 tablas. Tabla1: IDREGISTRO - NOMBRE - TAGS Tabla2: ID - IDREGISTRO - IDPROVINCIA ...
  #1 (permalink)  
Antiguo 03/02/2015, 13:40
 
Fecha de Ingreso: octubre-2008
Ubicación: Alicante
Mensajes: 337
Antigüedad: 15 años, 6 meses
Puntos: 9
No me aclaro con esta sentencia

Hola!

Llevo un poco de lío con las sentencias que utilizan 2 tablas.

Tabla1:
IDREGISTRO - NOMBRE - TAGS
Tabla2:
ID - IDREGISTRO - IDPROVINCIA - IDMUNICIPIO - COORDENADAS

Necesito hacer la siguiente búsqueda:

Quiero obtener Tabla1.NOMBRE y Tabla2.COORDENADAS de los registros que tengan los Tabla1.TAGS (TAGS REGEXP '[[:<:]]".$tag."[[:>:]]) y los Tabla2.IDPROVINCIA - Tabla2.IDMUNICIPIO que yo le indique.
(El IDREGISTRO tiene que ser el mismo, ya que la Tabla2 son varias ubicaciones de cada registro de Tabla1)

Bueno... pues con esta consultita llevo todo un día y me está resultando imposible, no consigo nada. Y por mucha ayuda que busco por la red no encuentro algo semejante que yo pueda interpretar para convertirlo a la que necesito... por favor necesito vuestra ayuda!!!!
  #2 (permalink)  
Antiguo 04/02/2015, 11:04
 
Fecha de Ingreso: octubre-2008
Ubicación: Alicante
Mensajes: 337
Antigüedad: 15 años, 6 meses
Puntos: 9
Respuesta: No me aclaro con esta sentencia

Pongo lo que tengo hecho hasta ahora: (6_servicios es Tabla1 y 6_ubicaciones es Tabla2)

Código MySQL:
Ver original
  1. SELECT 6_servicios.nombreEmpresa FROM 6_servicios
  2. WHERE (SELECT 6_ubicaciones.idRegistro FROM 6_ubicaciones WHERE activo=1 AND
  3. 6_ubicaciones.idProvincia = 3 GROUP BY 6_ubicaciones.idRegistro) = 6_servicios.id AND 6_servicios.busq_es
  4. REGEXP '[[:<:]]taller[[:>:]]' AND 6_servicios.idCategoria="3"

Pero cuando hay más de un resultado me devuelve #1242 - Subquery returns more than 1 row

Este es mi segundo día con este tema y nada, no avanzo... alguien que me eche una mano por favor!?!?
  #3 (permalink)  
Antiguo 04/02/2015, 11:16
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, 4 meses
Puntos: 2658
Respuesta: No me aclaro con esta sentencia

Tu subconsulta devuelve más de un registro, por lo tanto no puedes hacer una comapración con "=". Evidentemente las condiciones que pones en esa subconsulta no son suficientemente discriminantes como apra devovler un único registro.
Además,, estás poniendo nombres de objetos que inician con números, cosa prohibida den MySQL sin el uso de acentos agudos.

Fusionando las dos, podría quedar algo así:
Código MySQL:
Ver original
  1.     `6_servicios.nombreEmpresa`
  2. FROM `6_servicios` S INNER JOIN `6_ubicaciones` U ON S.id = U.idRegistro
  3. WHERE U.activo = 1
  4.     AND U.idProvincia = 3
  5.     AND S.busq_es REGEXP '[[:<:]]taller[[:>:]]'
  6.     AND S.idCategoria = 3
  7. GROUP BY U.idRegistro
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #4 (permalink)  
Antiguo 12/02/2015, 14:17
 
Fecha de Ingreso: octubre-2008
Ubicación: Alicante
Mensajes: 337
Antigüedad: 15 años, 6 meses
Puntos: 9
Respuesta: No me aclaro con esta sentencia

Hola gnzsoloyo, muchas gracias por tu ayuda. He hecho caso, no es posible con el comparador '='. Por lo que he utilizado IN y ya me devuelve todos los nombreEmpresa que necesito. Haciendo unos pequeños cambios he conseguido lo que quería!

Muchas gracias por tu tiempo y tus consejos crack!!

Etiquetas: registro, sentencia, 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 04:47.