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

Problema con consulta sql

Estas en el tema de Problema con consulta sql en el foro de Mysql en Foros del Web. Hola amigos. Tengo un problema al confeccionar una consulta sobre una tabla en mysql, a ver si me pueden ayudar. He habilitado un formulario en ...
  #1 (permalink)  
Antiguo 12/04/2010, 18:08
 
Fecha de Ingreso: abril-2010
Mensajes: 4
Antigüedad: 14 años, 7 meses
Puntos: 0
Problema con consulta sql

Hola amigos.

Tengo un problema al confeccionar una consulta sobre una tabla en mysql, a ver si me pueden ayudar.

He habilitado un formulario en mi web que envía los registros a una base de datos. Ocurre que los distintos registros de cada usuario (nombre, apellidos, dni, etc) no se ordenan en una misma fila, sino en una columna, teniendo como único nexo común la id del usuario.

Es decir, la tabla se muestra de la siguiente manera:

id1 id2 id3 content
1 1 1 Jose
2 1 2 Perez
3 1 3 45678595
4 2 1 Carlos
5 2 2 Diaz
6 2 3 46859784

Donde id1 es el índice de la tabla; id2 el del usuario, e id3 el de los diferentes registros de ese usuario.

La pregunta es, entonces, ¿qué consulta me sirve para agrupar todos los registros de cada usuario en una misma fila?


Gracias anticipadas
  #2 (permalink)  
Antiguo 12/04/2010, 18:55
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 17 años
Puntos: 2658
Respuesta: Problema con consulta sql

El problema que le veo, es que la tabla en si está muy mal diseñada, porque no tiene ningún sentido usarla de esa forma.
En todo caso lo que debería existir en un conjunto de campo que están faltando y que la tabla quedase mas o menos así:
Cita:
usuarios(id, nombre, apellido, dni)
id nombre apellido dni
1 Jose Perez 45678595
2 Carlos Diaz 46859784
Obviamente, la tabla donde estás haciendo el almacenamiento no es la que tu supones, o al menos la estructura de la misma no es la que describes.

Verifica tanto la estructura de la tabla que usas como la sentencia de inserción, porque el ejemplo carece de sentido.
__________________
¿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 12/04/2010, 19:12
 
Fecha de Ingreso: abril-2010
Mensajes: 4
Antigüedad: 14 años, 7 meses
Puntos: 0
Respuesta: Problema con consulta sql

Bueno, el hecho es que así está configurada la tabla y así guarda los registros que recibe del formulario.

Te pongo una captura de pantalla para que lo compruebes:



stiid es el índice de la tabla jos_m4j_storage_items

stid es el índice de usuario

eid es el índice de cada ítem del formulario

content es el contenido concreto de esos ítems.

Lo que necesito es que todos los ítems del content se muestren en una sola fila para cada usuario. No sé si me estoy explicando bien.

Un saludo y gracias por contestar
  #4 (permalink)  
Antiguo 12/04/2010, 19:33
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 17 años
Puntos: 2658
Respuesta: Problema con consulta sql

Te estás explicando bien, pero esa tabla está muy mal diseñada, y la consulta para reconstruir lo que necesitas será innecesariamente compleja.
¿Puedes rediseñar la tabla?

Es la mejor solución...
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #5 (permalink)  
Antiguo 12/04/2010, 19:51
 
Fecha de Ingreso: abril-2010
Mensajes: 4
Antigüedad: 14 años, 7 meses
Puntos: 0
Respuesta: Problema con consulta sql

Cita:
Iniciado por gnzsoloyo Ver Mensaje
¿Puedes rediseñar la tabla?

Es la mejor solución...
Ojalá pudiera. Se trata de un componente para joomla que presenta un formulario en la web y luego guarda los registros en la forma en que has visto. Me temo que si toco esa tabla rompa sus relaciones con las demás tablas del componente. Yo tenía la idea de que con una consulta sql podría convertir esas columnas a filas para cada usuario, pero si me dices que sería una consulta muy compleja me quedo sin recursos.

Gracias de cualquier modo por tu molestia.
  #6 (permalink)  
Antiguo 12/04/2010, 20:22
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 17 años
Puntos: 2658
Respuesta: Problema con consulta sql

Para poder reconstruir el registro en cuestión, el problema es que deberás hacer 4 INNER JOIN sobre la misma tabla, usando ALIAS, de modo de relacionar sus ID, pero tomando como condición que su PK sea mayor en forma secuencial entre cada tabla. Esto último es porque el único discriminante que tienes para definir la secuencia de "content" a leer es precisamente su secuencia incremental de la PK.
A mi me da la impresión que el problema no es el modelo de datos, sino que estás usando para almacenar esta información una tabla que no parece estar destinada a esa info. Lo digo porque no creo que la gente de Joomla haya diseñado de una forma tan ineficiente una tabla con un destino como ese.

¿No será que el formulario no es el correcto?

En todo caso, te sugeriría, para ver como resolver el problema de diseño del formulario o la tabla, que consultes en el Foro de Joomla, a ver qué te sugieren.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)

Etiquetas: sql
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:57.