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

Como obtener un fila de las filas [4,63,1] y [41,12,10] buscando por [1]?

Estas en el tema de Como obtener un fila de las filas [4,63,1] y [41,12,10] buscando por [1]? en el foro de Mysql en Foros del Web. A ver si aca me explico mejor: Supongamos que tengo una tabla así Código: Tabla ID | Nombre | Grupos -------------------- 1 Juan 1,21,44 2 ...
  #1 (permalink)  
Antiguo 06/05/2010, 16:51
 
Fecha de Ingreso: mayo-2008
Ubicación: En la guarida del mal, tratando de conquistar el mundo
Mensajes: 174
Antigüedad: 16 años
Puntos: 2
Como obtener un fila de las filas [4,63,1] y [41,12,10] buscando por [1]?

A ver si aca me explico mejor:

Supongamos que tengo una tabla así
Código:
Tabla
ID | Nombre | Grupos
--------------------
1    Juan     1,21,44
2    Pepe     4,5,61
3    José     8,27,32

Y hago una query así:
SELECT * FROM Tabla WHERE grupos LIKE '%1%';

Y me devolvería la fila 1 y 2
Bueno, entonces, como se les ocurre que podria hacer para que devuelva solo la 1?
A mi se me ocurrió que en vez de ponerle comas los pongo entre parentesis y solucionado, pero no se si es la mejor idea =/
  #2 (permalink)  
Antiguo 07/05/2010, 06:33
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Sabadell
Mensajes: 4.897
Antigüedad: 16 años, 1 mes
Puntos: 574
Respuesta: Como obtener un fila de las filas [4,63,1] y [41,12,10] buscando por [1]?

La solucion es normalizar la bbdd y meter el contenido de ese campo en una tabla con la estructura siguiente

Código:
IdRel  ID     Grupo
1        1       1
2        1      21
3        1      44
...
Luego es muy facil hacer

Código MySQL:
Ver original
  1. SELECT ID,Nombre
  2. FROM Tabla inner join TablaRel
  3. ON Tabla.ID=TablaRel.ID
  4. WHERE TablaRel.grupo=1

Quim
  #3 (permalink)  
Antiguo 07/05/2010, 06:48
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: Como obtener un fila de las filas [4,63,1] y [41,12,10] buscando por [1]?

Buena solución.
Yo agregaría que en ese contexto (una relación 1:N), el campo IdRel es superfluo, ya que la combinación ID+Grupo sería UNIQUE, por lo que puede actuar como PK.

Y la consulta sería:
Código MySQL:
Ver original
  1. SELECT ID,Nombre
  2. FROM Tabla INNER JOIN TablaRel USING(ID)
  3. WHERE TablaRel.grupo=1

En esencia, la consutla es igual... lo que cambia es que la segunda tabla sería de dos campos y no tres.
__________________
¿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 07/05/2010, 07:05
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Sabadell
Mensajes: 4.897
Antigüedad: 16 años, 1 mes
Puntos: 574
Respuesta: Como obtener un fila de las filas [4,63,1] y [41,12,10] buscando por [1]?

Si el campo idRel es superfluo puesto que tenemos la clave primaria compuesta que propone gnzsoloyo. Pero disponer de una clave simple es muy operativo en muchas situaciones, por lo que yo suelo crear un autoinc para tener una clave simple (y simple de usar)...

Quim

Etiquetas: comas, tablas
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 12:49.