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

¿Seleccionar registros donde un campo esté dentro de otro campo en forma de vector?

Estas en el tema de ¿Seleccionar registros donde un campo esté dentro de otro campo en forma de vector? en el foro de Mysql en Foros del Web. Hola a todos, espero saber explicar el problema que tengo: quiro realizar la siguiente consulta: Código: SELECT tabla1.campo1, tabla1.campo2, tabla2.campo3 FROM tabla1, tabla2, tabla3 WHERE ...
  #1 (permalink)  
Antiguo 24/08/2006, 15:34
Avatar de Seixas  
Fecha de Ingreso: mayo-2004
Ubicación: Barcelona
Mensajes: 60
Antigüedad: 20 años
Puntos: 0
Pregunta ¿Seleccionar registros donde un campo esté dentro de otro campo en forma de vector?

Hola a todos,

espero saber explicar el problema que tengo:

quiro realizar la siguiente consulta:

Código:
SELECT tabla1.campo1, tabla1.campo2, tabla2.campo3 FROM tabla1, tabla2, tabla3 WHERE tabla2.campo4 = tabla1.campo2 AND tabla3.campo5 = $variable AND tabla3.campo5 IN (tabla1.campo6) ORDER BY tabla1.campo 1 DESC
(Destaco en negrita los campos que me dan problemas)

Es decir, recupero un valor por PHP, e indico que recupere registros donde el campo5 sea igual a la variable y que ese campo (por consiguiente la variable) esté dentro del campo tabla1.campo6, el cual es una cadena a modo de vector (valor1,valor2,valor3,valor4,...).

La consulta me funciona si en vez de el campo6 pongo una cadena escrita manualmente, pero no puede ser una cadena fija, ya que el campo puede variar segun los registros de la tabla1.

Una aclaración: el campo5 es un número entero, y el campo6 contiene una cadena de número enteros. Ejemplo: 1,3,4,7

¿Alguien sabría ayudarme?

Muchas gracias por su atención.

Última edición por Seixas; 24/08/2006 a las 15:39 Razón: Aclaración de la pregunta
  #2 (permalink)  
Antiguo 24/08/2006, 15:39
Avatar de seyacat  
Fecha de Ingreso: agosto-2006
Mensajes: 382
Antigüedad: 17 años, 8 meses
Puntos: 0
Si la variable es un string deberia estar como '$variable' entre comillas
  #3 (permalink)  
Antiguo 24/08/2006, 15:44
Avatar de PequeñoMauro  
Fecha de Ingreso: abril-2006
Ubicación: Lima - Perú
Mensajes: 600
Antigüedad: 18 años, 1 mes
Puntos: 3
No veo la necesidad que iguales los campos 5 y 6 con IN, ya que IN se usa mayormente cuando tienes más de un string a comparar. Solo igualalo, no te compliques en ese aspecto
AND tabla3.campo5=tabla1.campo6
__________________
"Nada en mis manos traigo tan solo a tu cruz me aferro....."
  #4 (permalink)  
Antiguo 24/08/2006, 15:44
Avatar de Seixas  
Fecha de Ingreso: mayo-2004
Ubicación: Barcelona
Mensajes: 60
Antigüedad: 20 años
Puntos: 0
Gracias por responder.

No, no es eso lo que falla seyacat, ya que la variable es un número entero. Diría que el problema está en el IN. Un ejemplo de lo que me pasa:

Tengo dos registros en la tabla. Para el primer registro el campo6 es 2, y para el segundo registro el campo6 es 2,3.

Cuando la $variable es 2, la sentencia me devuelve los dos registros, PERO cuando es 3 no me devuelve ninguna, cuando me tendría que devolver el segundo registro.

En lo que comentas PequeñoMauro, no puedo igualar, ya que si igualo sólo me devolvería los registros cuyo campo6 fuese un número entero, y en la mayoría de los casos el campo6 tendrá diferentes números enteros separados por "," (comas).

¿Más ideas de lo que puede pasar?

Gracias.
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 22:35.