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

problemas con una consulta

Estas en el tema de problemas con una consulta en el foro de Bases de Datos General en Foros del Web. ando a las vueltas con esto tengo una tabla que en un campo guarda valores como " 23 43 33 45 " y tengo otra ...
  #1 (permalink)  
Antiguo 13/07/2004, 11:24
Avatar de oktubre  
Fecha de Ingreso: agosto-2003
Ubicación: en mi casa
Mensajes: 371
Antigüedad: 20 años, 8 meses
Puntos: 4
Pregunta problemas con una consulta


ando a las vueltas con esto

tengo una tabla que en un campo guarda valores como " 23 43 33 45 "

y tengo otra que los id_cliente son números tal " 23" etc, etc,

pero necesito hacer una consulta que me diga que el id_cliente esta contenido en el campo de la otra tabla, el que los guarda separados por un espacio.

osea, tabla_clientes tiene id_cliente
y tabla_posiciones tiene un campo que guarda un monton de números, y yo quiero selecionas los registros de la tabla_clientes que el identificador este dentro del campo de la otra que guarda varios numeros separados por un espacio.

espero puedan ayudarme porque estoy muy retrasado con mi trabajo y esto es el eje de la aplicacion

saludos a todos y un besote a xalome
__________________
w32.oktubre@mm <----------------<<<<
prefiero cerrar la boca y parecer un tonto que abrirla y confirmarlo.

Última edición por Cluster; 13/07/2004 a las 11:36 Razón: Pese que soy usuario activo del foro .. no soy el único que podría aportar con la solución.
  #2 (permalink)  
Antiguo 13/07/2004, 11:38
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 4 meses
Puntos: 129
Muevo el tema al foro de Base de datos para que te orienten sobre la consulta SQL que necesitas (estaría bueno más detalles sobre la estructura de tus tablas y más ejemplos de los datos que guardas en ellas).

Un saludo,
  #3 (permalink)  
Antiguo 13/07/2004, 11:46
O_O
 
Fecha de Ingreso: enero-2002
Ubicación: Santiago - Chile
Mensajes: 34.417
Antigüedad: 22 años, 4 meses
Puntos: 129
Dices que tienes un campo tipo:

ids_noseque="23 44 54 67 53"

Por qué no normalizas esas tablas tipo relación N <-> N en una tabla aparte:

matriz
id_matriz
id_cliente
id_posicion

para que guarde ahí la relación entre los clientes y su posición .. sólo los ID. Así puedes recurrir a SQL 100% para hacer de forma más óptima tus consultas a tu BD.

Guardar una serie de "datos" separados por algo (coma .. espacio) en un campo único de un registro está bien para "simplificar" tu "normalización" y si sólo lo usas poco más que para "registrar y leer" esos datos .. pero en el momento que empiezas a requerir de consultas basadas en esos datos .. es MEJOR que normalizes ese modelo de datos y lo lleves a un paso más de normalización .. por ejemplo el que te propongo.

Si quieres ver más sobre normalización tienes este tutorial para que leas (ya sé que estás apurado .. pero si no diseñas bien la BD AHORA .. cada vez te vas a complicar más con lo que quieras hacer .. además que bajará el rendimiento de la aplicación cuando manejes más datos que los que tal vez de pruebas ahora estás usando).

http://www.mysql-hispano.org/page.php?id=16

Un saludo,
  #4 (permalink)  
Antiguo 13/07/2004, 11:51
Avatar de oktubre  
Fecha de Ingreso: agosto-2003
Ubicación: en mi casa
Mensajes: 371
Antigüedad: 20 años, 8 meses
Puntos: 4
igual me ahoga la idea de no saber como hacer una consulta del tipo:
quiero todo de la tabla_1, tabla_2 donde tabla_1.id este incluido en el campo tabla_2.campo

se entiende?

no se por que aparece esta necesidad, pero cuando planifique la aplicacion ni por las tapas me imagine que necesitaria esto
__________________
w32.oktubre@mm <----------------<<<<
prefiero cerrar la boca y parecer un tonto que abrirla y confirmarlo.
  #5 (permalink)  
Antiguo 13/07/2004, 14:02
Avatar de sism82  
Fecha de Ingreso: octubre-2003
Ubicación: Guadalajara
Mensajes: 865
Antigüedad: 20 años, 6 meses
Puntos: 1
creo que tal vez esto pueda servir:

Código:
SELECT * FROM tabla1,tabla2 WHERE tabla1.id IN (tabla2.id)
no estoy seguro, pero es una posibilidad....

suerte
  #6 (permalink)  
Antiguo 13/07/2004, 14:05
Avatar de oktubre  
Fecha de Ingreso: agosto-2003
Ubicación: en mi casa
Mensajes: 371
Antigüedad: 20 años, 8 meses
Puntos: 4
creo que puede ser
reviso y aviso!

que tonto estoy ultimamente
__________________
w32.oktubre@mm <----------------<<<<
prefiero cerrar la boca y parecer un tonto que abrirla y confirmarlo.
  #7 (permalink)  
Antiguo 13/07/2004, 15:29
Avatar de sism82  
Fecha de Ingreso: octubre-2003
Ubicación: Guadalajara
Mensajes: 865
Antigüedad: 20 años, 6 meses
Puntos: 1
que ha habido octubre, funciona?
  #8 (permalink)  
Antiguo 13/07/2004, 16:34
 
Fecha de Ingreso: junio-2004
Mensajes: 11
Antigüedad: 19 años, 10 meses
Puntos: 0
Cita:
Iniciado por sism82
creo que tal vez esto pueda servir:

Código:
SELECT * FROM tabla1,tabla2 WHERE tabla1.id IN (tabla2.id)
no estoy seguro, pero es una posibilidad....

suerte
Considero que esta solucion no es muy apropiada, puesto que tabla2.id tiene otros datos que pueden hacer coincidir la busqueda.

Me explico mejor a ver si entendi tu requerimiento:

tabla1.id = solo contiene el codigo del cliente
tabla2.id = ademas del codigo del cliente, contiene otros valores.

Pues bien, en tabla2.id si sabes en cual posicion y cuantos son los caracteres que corresponden al codigo del cliente, un substring es tu mejor alternativa.

Ejemplo
nombre tipo tamaño
tabla1.id varchar 4
tabla2.id varchar 10

supongamos que en tabla2.id, el codigo del cliente esta desde el 3er caracter, 4 posiciones.

select tabla1.id
from tabla1 inner join tabla2 on tabla1.id=substring(tabla2.id,3,4)

Prueba y nos avisas.
  #9 (permalink)  
Antiguo 13/07/2004, 16:43
Avatar de oktubre  
Fecha de Ingreso: agosto-2003
Ubicación: en mi casa
Mensajes: 371
Antigüedad: 20 años, 8 meses
Puntos: 4
NO, EN REALIDAD EN TABLA_2.CAMPO_DE_IDS GUARDO VARIOS ID.

es que tengo que permitirle a un usuario, ver datos de varios clientes, entonces se me ocurrio crear una tabla tabla_dos donde en un campo guardo " 23 24 34" que serian los id de la tabla_1 que pueden visualizar.

tengo una pagina de informes donde mediante una consulta le permito ver el cliente Nº "23" o el "24 o el "34",
necesito saber con que consulta puedo relacionar los datos. osea, priemero determino que el usuario "fruta" puede ver "24 23 34" y despues realizo una consulta contra la tabla clientes mostrandole los datos del cliente 23 24 y 34.
se entiende=?
__________________
w32.oktubre@mm <----------------<<<<
prefiero cerrar la boca y parecer un tonto que abrirla y confirmarlo.
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 13:51.