![]() |
| |||||||
| Registrarse | Preguntas Frecuentes | Lista de Foreros | Calendario | Buscar | Temas de Hoy | Marcar Foros Como Leídos |
![]() |
| | LinkBack | Herramientas | Desplegado |
| |||
| Perdón por el OT, pero el grupo de bd está casi muerto, y mi inglés es demasiado malo para explicar mi problema en el grupo de mysql en inglés. Bien mi problema es el siguiente: estoy haciendo una gestión documental para una intranet, entre otras cosas guardo en una tabla las características de los documentos, entre otras a que categoría pertenecen, pues están clasificados por categorías. Esto en principio no suponía problema alguno, pero entonces decidieron que un documento podía pertenecer a más de una categoría al mismo tiempo, es decir un documento que contenga los precios y formas de venta de un producto podrá, por ejemplo, pertenecer a la categoría ventas y a la categoría marketing. Bien esto lo resolví usando campos tipo set, pero estos campo pueden contener un máximo de 64 valores, y en el arbol de categorías tengo ya 350 (es una constructora, y cada obra es una categoría con sus subcategorías), por lo que el campo pasa a ser un campo varchar donde guardo los valores separados por comas. Lo que no consigo hacer es una consulta de todos los documentos que pertenezcan a una categoría concreta, el select que hacía antes era: SELECT * FROM documentos WHERE FIND_IN_SET('$cat_rsDocum', categoria) siendo $cat_rsDocum el id de la categoría buscada y categoría el campo donde se guardan los ids correspondientes a las categorías de ese documento, que como dije antes puede albergar un máximo de 64 valores diferentes y ya llevo 350 categorías diferentes. El caso es que no se como hacer lo mismo en un campo varchar, ¿alguien me echa una mano? Gracias salud -- ainvar de los carnutos |
| | ||||
| ||||
| |
| |||
| On 9 jul, 10:25, Ainvar <ain...***deloscarnutos.com> wrote: > Perdón por el OT, pero el grupo de bd está casi muerto, y mi ingléses > demasiado malo para explicar mi problema en el grupo de mysql en inglés. > > Bien mi problema es el siguiente: estoy haciendo una gestión documental > para una intranet, entre otras cosas guardo en una tabla las > características de los documentos, entre otras a que categoría > pertenecen, pues están clasificados por categorías. Esto en principiono > suponía problema alguno, pero entonces decidieron que un documento podía > pertenecer a más de una categoría al mismo tiempo, es decir un documento > que contenga los precios y formas de venta de un producto podrá, por > ejemplo, pertenecer a la categoría ventas y a la categoría marketing. > Bien esto lo resolví usando campos tipo set, pero estos campo pueden > contener un máximo de 64 valores, y en el arbol de categorías tengo ya > 350 (es una constructora, y cada obra es una categoría con sus > subcategorías), por lo que el campo pasa a ser un campo varchar donde > guardo los valores separados por comas. Lo que no consigo hacer es una > consulta de todos los documentos que pertenezcan a una categoría > concreta, el select que hacía antes era: Seguramente lo que te voy a decir no es lo que quieres oir, pero lo que deberias hacer es utilizar otra tabla con la relacion (docid, categoria) y trabajar con joins. Razones puede haber muchas, entre ellas: 1) Es mas portable (SQL estandar) 2) Es mas eficiente (obtener los ID de los documentos desde la relación debe ser inmediato, igual que obtener las "etiquetas" o categorias de un documento. Solo tienes que definir los índices). Meterlo todo en un campo varchar obliga a "parsear" el campo (a menos que MySQL internamente haga esto mismo que te estoy diciendo) > > SELECT * FROM documentos WHERE FIND_IN_SET('$cat_rsDocum', categoria) > > siendo $cat_rsDocum el id de la categoría buscada y categoría el campo > donde se guardan los ids correspondientes a las categorías de ese > documento, que como dije antes puede albergar un máximo de 64 valores > diferentes y ya llevo 350 categorías diferentes. > > El caso es que no se como hacer lo mismo en un campo varchar, ¿alguien > me echa una mano? Gracias > > salud > -- > ainvar de los carnutos |
| |||
| On 9 jul, 10:25, Ainvar <ain...***deloscarnutos.com> wrote: > Perdón por el OT, pero el grupo de bd está casi muerto, y mi ingléses > demasiado malo para explicar mi problema en el grupo de mysql en inglés. > > Bien mi problema es el siguiente: estoy haciendo una gestión documental > para una intranet, entre otras cosas guardo en una tabla las > características de los documentos, entre otras a que categoría > pertenecen, pues están clasificados por categorías. Esto en principiono > suponía problema alguno, pero entonces decidieron que un documento podía > pertenecer a más de una categoría al mismo tiempo, es decir un documento > que contenga los precios y formas de venta de un producto podrá, por > ejemplo, pertenecer a la categoría ventas y a la categoría marketing. > Bien esto lo resolví usando campos tipo set, pero estos campo pueden > contener un máximo de 64 valores, y en el arbol de categorías tengo ya > 350 (es una constructora, y cada obra es una categoría con sus > subcategorías), por lo que el campo pasa a ser un campo varchar donde > guardo los valores separados por comas. Lo que no consigo hacer es una > consulta de todos los documentos que pertenezcan a una categoría > concreta, el select que hacía antes era: Seguramente lo que te voy a decir no es lo que quieres oir, pero lo que deberias hacer es utilizar otra tabla con la relacion (docid, categoria) y trabajar con joins. Razones puede haber muchas, entre ellas: 1) Es mas portable (SQL estandar) 2) Es mas eficiente (obtener los ID de los documentos desde la relación debe ser inmediato, igual que obtener las "etiquetas" o categorias de un documento. Solo tienes que definir los índices). Meterlo todo en un campo varchar obliga a "parsear" el campo (a menos que MySQL internamente haga esto mismo que te estoy diciendo) > > SELECT * FROM documentos WHERE FIND_IN_SET('$cat_rsDocum', categoria) > > siendo $cat_rsDocum el id de la categoría buscada y categoría el campo > donde se guardan los ids correspondientes a las categorías de ese > documento, que como dije antes puede albergar un máximo de 64 valores > diferentes y ya llevo 350 categorías diferentes. > > El caso es que no se como hacer lo mismo en un campo varchar, ¿alguien > me echa una mano? Gracias > > salud > -- > ainvar de los carnutos |
| |||
| On 9 jul, 10:25, Ainvar <ain...***deloscarnutos.com> wrote: > Perdón por el OT, pero el grupo de bd está casi muerto, y mi ingléses > demasiado malo para explicar mi problema en el grupo de mysql en inglés. > > Bien mi problema es el siguiente: estoy haciendo una gestión documental > para una intranet, entre otras cosas guardo en una tabla las > características de los documentos, entre otras a que categoría > pertenecen, pues están clasificados por categorías. Esto en principiono > suponía problema alguno, pero entonces decidieron que un documento podía > pertenecer a más de una categoría al mismo tiempo, es decir un documento > que contenga los precios y formas de venta de un producto podrá, por > ejemplo, pertenecer a la categoría ventas y a la categoría marketing. > Bien esto lo resolví usando campos tipo set, pero estos campo pueden > contener un máximo de 64 valores, y en el arbol de categorías tengo ya > 350 (es una constructora, y cada obra es una categoría con sus > subcategorías), por lo que el campo pasa a ser un campo varchar donde > guardo los valores separados por comas. Lo que no consigo hacer es una > consulta de todos los documentos que pertenezcan a una categoría > concreta, el select que hacía antes era: Seguramente lo que te voy a decir no es lo que quieres oir, pero lo que deberias hacer es utilizar otra tabla con la relacion (docid, categoria) y trabajar con joins. Razones puede haber muchas, entre ellas: 1) Es mas portable (SQL estandar) 2) Es mas eficiente (obtener los ID de los documentos desde la relación debe ser inmediato, igual que obtener las "etiquetas" o categorias de un documento. Solo tienes que definir los índices). Meterlo todo en un campo varchar obliga a "parsear" el campo (a menos que MySQL internamente haga esto mismo que te estoy diciendo) > > SELECT * FROM documentos WHERE FIND_IN_SET('$cat_rsDocum', categoria) > > siendo $cat_rsDocum el id de la categoría buscada y categoría el campo > donde se guardan los ids correspondientes a las categorías de ese > documento, que como dije antes puede albergar un máximo de 64 valores > diferentes y ya llevo 350 categorías diferentes. > > El caso es que no se como hacer lo mismo en un campo varchar, ¿alguien > me echa una mano? Gracias > > salud > -- > ainvar de los carnutos |
| |||
| On 9 jul, 10:25, Ainvar <ain...***deloscarnutos.com> wrote: > Perdón por el OT, pero el grupo de bd está casi muerto, y mi ingléses > demasiado malo para explicar mi problema en el grupo de mysql en inglés. > > Bien mi problema es el siguiente: estoy haciendo una gestión documental > para una intranet, entre otras cosas guardo en una tabla las > características de los documentos, entre otras a que categoría > pertenecen, pues están clasificados por categorías. Esto en principiono > suponía problema alguno, pero entonces decidieron que un documento podía > pertenecer a más de una categoría al mismo tiempo, es decir un documento > que contenga los precios y formas de venta de un producto podrá, por > ejemplo, pertenecer a la categoría ventas y a la categoría marketing. > Bien esto lo resolví usando campos tipo set, pero estos campo pueden > contener un máximo de 64 valores, y en el arbol de categorías tengo ya > 350 (es una constructora, y cada obra es una categoría con sus > subcategorías), por lo que el campo pasa a ser un campo varchar donde > guardo los valores separados por comas. Lo que no consigo hacer es una > consulta de todos los documentos que pertenezcan a una categoría > concreta, el select que hacía antes era: Seguramente lo que te voy a decir no es lo que quieres oir, pero lo que deberias hacer es utilizar otra tabla con la relacion (docid, categoria) y trabajar con joins. Razones puede haber muchas, entre ellas: 1) Es mas portable (SQL estandar) 2) Es mas eficiente (obtener los ID de los documentos desde la relación debe ser inmediato, igual que obtener las "etiquetas" o categorias de un documento. Solo tienes que definir los índices). Meterlo todo en un campo varchar obliga a "parsear" el campo (a menos que MySQL internamente haga esto mismo que te estoy diciendo) > > SELECT * FROM documentos WHERE FIND_IN_SET('$cat_rsDocum', categoria) > > siendo $cat_rsDocum el id de la categoría buscada y categoría el campo > donde se guardan los ids correspondientes a las categorías de ese > documento, que como dije antes puede albergar un máximo de 64 valores > diferentes y ya llevo 350 categorías diferentes. > > El caso es que no se como hacer lo mismo en un campo varchar, ¿alguien > me echa una mano? Gracias > > salud > -- > ainvar de los carnutos |
| |||
| On 9 jul, 10:25, Ainvar <ain...***deloscarnutos.com> wrote: > Perdón por el OT, pero el grupo de bd está casi muerto, y mi ingléses > demasiado malo para explicar mi problema en el grupo de mysql en inglés. > > Bien mi problema es el siguiente: estoy haciendo una gestión documental > para una intranet, entre otras cosas guardo en una tabla las > características de los documentos, entre otras a que categoría > pertenecen, pues están clasificados por categorías. Esto en principiono > suponía problema alguno, pero entonces decidieron que un documento podía > pertenecer a más de una categoría al mismo tiempo, es decir un documento > que contenga los precios y formas de venta de un producto podrá, por > ejemplo, pertenecer a la categoría ventas y a la categoría marketing. > Bien esto lo resolví usando campos tipo set, pero estos campo pueden > contener un máximo de 64 valores, y en el arbol de categorías tengo ya > 350 (es una constructora, y cada obra es una categoría con sus > subcategorías), por lo que el campo pasa a ser un campo varchar donde > guardo los valores separados por comas. Lo que no consigo hacer es una > consulta de todos los documentos que pertenezcan a una categoría > concreta, el select que hacía antes era: Seguramente lo que te voy a decir no es lo que quieres oir, pero lo que deberias hacer es utilizar otra tabla con la relacion (docid, categoria) y trabajar con joins. Razones puede haber muchas, entre ellas: 1) Es mas portable (SQL estandar) 2) Es mas eficiente (obtener los ID de los documentos desde la relación debe ser inmediato, igual que obtener las "etiquetas" o categorias de un documento. Solo tienes que definir los índices). Meterlo todo en un campo varchar obliga a "parsear" el campo (a menos que MySQL internamente haga esto mismo que te estoy diciendo) > > SELECT * FROM documentos WHERE FIND_IN_SET('$cat_rsDocum', categoria) > > siendo $cat_rsDocum el id de la categoría buscada y categoría el campo > donde se guardan los ids correspondientes a las categorías de ese > documento, que como dije antes puede albergar un máximo de 64 valores > diferentes y ya llevo 350 categorías diferentes. > > El caso es que no se como hacer lo mismo en un campo varchar, ¿alguien > me echa una mano? Gracias > > salud > -- > ainvar de los carnutos |
| |||
| On 9 jul, 10:25, Ainvar <ain...***deloscarnutos.com> wrote: > Perdón por el OT, pero el grupo de bd está casi muerto, y mi ingléses > demasiado malo para explicar mi problema en el grupo de mysql en inglés. > > Bien mi problema es el siguiente: estoy haciendo una gestión documental > para una intranet, entre otras cosas guardo en una tabla las > características de los documentos, entre otras a que categoría > pertenecen, pues están clasificados por categorías. Esto en principiono > suponía problema alguno, pero entonces decidieron que un documento podía > pertenecer a más de una categoría al mismo tiempo, es decir un documento > que contenga los precios y formas de venta de un producto podrá, por > ejemplo, pertenecer a la categoría ventas y a la categoría marketing. > Bien esto lo resolví usando campos tipo set, pero estos campo pueden > contener un máximo de 64 valores, y en el arbol de categorías tengo ya > 350 (es una constructora, y cada obra es una categoría con sus > subcategorías), por lo que el campo pasa a ser un campo varchar donde > guardo los valores separados por comas. Lo que no consigo hacer es una > consulta de todos los documentos que pertenezcan a una categoría > concreta, el select que hacía antes era: Seguramente lo que te voy a decir no es lo que quieres oir, pero lo que deberias hacer es utilizar otra tabla con la relacion (docid, categoria) y trabajar con joins. Razones puede haber muchas, entre ellas: 1) Es mas portable (SQL estandar) 2) Es mas eficiente (obtener los ID de los documentos desde la relación debe ser inmediato, igual que obtener las "etiquetas" o categorias de un documento. Solo tienes que definir los índices). Meterlo todo en un campo varchar obliga a "parsear" el campo (a menos que MySQL internamente haga esto mismo que te estoy diciendo) > > SELECT * FROM documentos WHERE FIND_IN_SET('$cat_rsDocum', categoria) > > siendo $cat_rsDocum el id de la categoría buscada y categoría el campo > donde se guardan los ids correspondientes a las categorías de ese > documento, que como dije antes puede albergar un máximo de 64 valores > diferentes y ya llevo 350 categorías diferentes. > > El caso es que no se como hacer lo mismo en un campo varchar, ¿alguien > me echa una mano? Gracias > > salud > -- > ainvar de los carnutos |
| |||
| vmvarela***gmail.com escribió: > Seguramente lo que te voy a decir no es lo que quieres oir, pero lo > que deberias hacer es utilizar otra tabla con la relacion (docid, > categoria) y trabajar con joins. Razones puede haber muchas, entre > ellas: > > 1) Es mas portable (SQL estandar) > 2) Es mas eficiente (obtener los ID de los documentos desde la > relación debe ser inmediato, igual que obtener las "etiquetas" o > categorias de un documento. Solo tienes que definir los índices). > Meterlo todo en un campo varchar obliga a "parsear" el campo (a menos > que MySQL internamente haga esto mismo que te estoy diciendo) > Efectivamente no es lo que quería oir ;-) Vale, ya había pensado esto, pero lo rechacé porque no me parece más eficiente, pues primero tengo que hacer una consulta a esa tabla para saber que ids y las categorías de los documentos que necesito, y luego un join para saber los datos del documento (nombre, tamaño, tipo, carpeta, etc...) y además no resuelve mi problema, pues cada documento seguirá estando en varias categorías, ¿o dices que si por ejemplo un dcoumento está en 3 categorías tiene que haber 3 registros en esa tabla de relación? -- salud ainvar de los carnutos |
| |||
| vmvarela***gmail.com escribió: > Seguramente lo que te voy a decir no es lo que quieres oir, pero lo > que deberias hacer es utilizar otra tabla con la relacion (docid, > categoria) y trabajar con joins. Razones puede haber muchas, entre > ellas: > > 1) Es mas portable (SQL estandar) > 2) Es mas eficiente (obtener los ID de los documentos desde la > relación debe ser inmediato, igual que obtener las "etiquetas" o > categorias de un documento. Solo tienes que definir los índices). > Meterlo todo en un campo varchar obliga a "parsear" el campo (a menos > que MySQL internamente haga esto mismo que te estoy diciendo) > Efectivamente no es lo que quería oir ;-) Vale, ya había pensado esto, pero lo rechacé porque no me parece más eficiente, pues primero tengo que hacer una consulta a esa tabla para saber que ids y las categorías de los documentos que necesito, y luego un join para saber los datos del documento (nombre, tamaño, tipo, carpeta, etc...) y además no resuelve mi problema, pues cada documento seguirá estando en varias categorías, ¿o dices que si por ejemplo un dcoumento está en 3 categorías tiene que haber 3 registros en esa tabla de relación? -- salud ainvar de los carnutos |
| |||
| vmvarela***gmail.com escribió: > Seguramente lo que te voy a decir no es lo que quieres oir, pero lo > que deberias hacer es utilizar otra tabla con la relacion (docid, > categoria) y trabajar con joins. Razones puede haber muchas, entre > ellas: > > 1) Es mas portable (SQL estandar) > 2) Es mas eficiente (obtener los ID de los documentos desde la > relación debe ser inmediato, igual que obtener las "etiquetas" o > categorias de un documento. Solo tienes que definir los índices). > Meterlo todo en un campo varchar obliga a "parsear" el campo (a menos > que MySQL internamente haga esto mismo que te estoy diciendo) > Efectivamente no es lo que quería oir ;-) Vale, ya había pensado esto, pero lo rechacé porque no me parece más eficiente, pues primero tengo que hacer una consulta a esa tabla para saber que ids y las categorías de los documentos que necesito, y luego un join para saber los datos del documento (nombre, tamaño, tipo, carpeta, etc...) y además no resuelve mi problema, pues cada documento seguirá estando en varias categorías, ¿o dices que si por ejemplo un dcoumento está en 3 categorías tiene que haber 3 registros en esa tabla de relación? -- salud ainvar de los carnutos |
| |
| |
![]() |
| Herramientas | |
| Desplegado | |
| |
Temas Similares | ||||
| Tema | Autor | Foro | Respuestas | Último mensaje |
| Como asignar un valor a varios Textbox desde C# .Net mediante un fornext? | jazdian | Newsgroup microsoft.public.es.dotnet.aspnet | 12 | 21-08-2008 19:33:58 |
| Como asignar un valor a varios Textbox desde C# .Net mediante un fornext? | jazdian | Newsgroup microsoft.public.es.csharp | 12 | 21-08-2008 19:33:58 |
| MySQL - Seleccionar entre 2 fechas | Diego | Newsgroup es.comp.bd.misc | 32 | 07-12-2005 07:50:52 |
| como pasar un valor de una variable entre formularios | Esteban Montufar | Newsgroup microsoft.public.es.desarrollo.aplicaciones.moviles | 10 | 11-04-2005 19:30:36 |
| [MySQL] Fecha y hora actuales como valor por defecto al insertar registro | Kepler | Newsgroup es.comp.bd.misc | 24 | 01-09-2004 11:27:26 |