Foros del Web

Foros del Web (http://www.forosdelweb.com/)
-   Bases de Datos General (http://www.forosdelweb.com/f21/)
-   -   Campo con valores separados por comas (http://www.forosdelweb.com/f21/campo-con-valores-separados-por-comas-432985/)

antoniocainzos 10/10/2006 05:35

Campo con valores separados por comas
 
Hola a todos, a ver si alguien puede ayudarme.

Tengo una base de datos access con dos tablas (Ficha y Opciones).
En uno de los campos de la tabla Ficha (Ficha.Opciones) recoge los valores de la tabla Opciones guardando los ID's separado por comas, es decir, 1,3,4,7...
La tabla opciones tiene los campos: IdOpciones, descripcion.
Lo que necesito es que al ver la página detalle de un registro de Ficha me muestre como campo opciones: descripcion1, descripcion3, descripcion4, descripcion7.

¿Alguna pista de lo que debo hacer?
No se si está muy bien explicado. Si no se entiende intento hacerlo mejor.

Gracias anticipadas.

Un saludo,
Antonio Cainzos

MACGREGOR 11/10/2006 05:02

Debes eliminar el campo Ficha.Opciones de la tabla ficha.

Crea una tabla que se llame por ejemplo Rel_ficha_op en la que guardes la relación que existe entre la ficha y las opciones guarda los identificadores de las dos tablas en esta nueva.

ejemplo:
Tabla Ficha
id_F:1 (resto campos)
id_F:2 (resto campos)
id_F:3 (resto campos)
id_F:4 (resto campos)
id_F:5 (resto campos)
id_F:6 (resto campos)
..............................

Tabla Rel_ficha_op
id_F:1 id_op:1
id_F:1 id_op:3
id_F:1 id_op:4
id_F:1 id_op:7
id_F:2 id_op:2
id_F:2 id_op:5
..............................

Tabla Opciones:
id_op:1 desc:"descripción 1"
id_op:2 desc:"descripción 2"
id_op:3 desc:"descripción 3"
id_op:4 desc:"descripción 4"
id_op:5 desc:"descripción 5"
id_op:6 desc:"descripción 6"
..............................

De esta manera podrás cruzar con una consulta la tabla ficha y la tabla opciones y hacer lo que quieres.
Select FI.id_F, FI.(resto de campos), OP.id_op, OP.desc
from ficha as FI, opciones as OP, Rel_ficha_op as REL
where FI.id_F=REL.id_F and REL.id_op=OP.id_op
and FI.id_F <= 2 (suponiendo que queremos las 2 primeras fichas)

El resultado (siguiendo como ejemplo los valores anteriores)

id_F:1 (resto campos) id_op:1 desc:"descripción 1"
id_F:1 (resto campos) id_op:3 desc:"descripción 3"
id_F:1 (resto campos) id_op:4 desc:"descripción 4"
id_F:1 (resto campos) id_op:7 desc:"descripción 7"
id_F:2 (resto campos) id_op:2 desc:"descripción 2"
id_F:2 (resto campos) id_op:5 desc:"descripción 5"


Ahora ya tienes lo que quieres, si solo quieres una línea para cada ficha puedes coger esta consulta sql meterla en la clausula from como si fuera una tabla "from (toda la consulta anterior) as RES1..." y realizar una consulta concatenando los campos descripción.

antoniocainzos 11/10/2006 05:53

Muchas gracias, sobre todo por la explicación tan detallada. Voy a probar de inmediato.
Gracias de nuevo

Un saludo
Antonio Cainzos


La zona horaria es GMT -6. Ahora son las 08:45.

Desarrollado por vBulletin® Versión 3.8.7
Derechos de Autor ©2000 - 2026, Jelsoft Enterprises Ltd.