Newsgrupos.com  

Retroceder   Newsgrupos.com > Forum > Newsgroup es.comp.lenguajes.* Foro > Newsgroup es.comp.lenguajes.php
Registrarse Preguntas Frecuentes Lista de Foreros Calendario Buscar Temas de Hoy Marcar Foros Como Leídos




Respuesta
 
LinkBack Herramientas Desplegado
  #1 (permalink)  
Antiguo 09-07-2007, 09:25:05
Ainvar
 
Mensajes: n/a
Predeterminado OT como seleccionar un valor entre varios en mysql

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
Responder Con Cita
Alt Today
Advertising
Google Adsense
 
This advertising will not be shown
in this way to registered members.
Register your free account today
and become a member on
Newsgrupos.com
Standard Sponsored Links

  #2 (permalink)  
Antiguo 09-07-2007, 11:13:16
vmvarela@gmail.com
 
Mensajes: n/a
Predeterminado Re: OT como seleccionar un valor entre varios en mysql

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



Responder Con Cita
  #3 (permalink)  
Antiguo 09-07-2007, 11:13:16
vmvarela@gmail.com
 
Mensajes: n/a
Predeterminado Re: OT como seleccionar un valor entre varios en mysql

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



Responder Con Cita
  #4 (permalink)  
Antiguo 09-07-2007, 11:13:16
vmvarela@gmail.com
 
Mensajes: n/a
Predeterminado Re: OT como seleccionar un valor entre varios en mysql

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



Responder Con Cita
  #5 (permalink)  
Antiguo 09-07-2007, 11:13:16
vmvarela@gmail.com
 
Mensajes: n/a
Predeterminado Re: OT como seleccionar un valor entre varios en mysql

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



Responder Con Cita
  #6 (permalink)  
Antiguo 09-07-2007, 11:13:16
vmvarela@gmail.com
 
Mensajes: n/a
Predeterminado Re: OT como seleccionar un valor entre varios en mysql

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



Responder Con Cita
  #7 (permalink)  
Antiguo 09-07-2007, 11:13:16
vmvarela@gmail.com
 
Mensajes: n/a
Predeterminado Re: OT como seleccionar un valor entre varios en mysql

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



Responder Con Cita
  #8 (permalink)  
Antiguo 09-07-2007, 16:03:33
ainvar
 
Mensajes: n/a
Predeterminado Re: OT como seleccionar un valor entre varios en mysql

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
Responder Con Cita
  #9 (permalink)  
Antiguo 09-07-2007, 16:03:33
ainvar
 
Mensajes: n/a
Predeterminado Re: OT como seleccionar un valor entre varios en mysql

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
Responder Con Cita
  #10 (permalink)  
Antiguo 09-07-2007, 16:03:33
ainvar
 
Mensajes: n/a
Predeterminado Re: OT como seleccionar un valor entre varios en mysql

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
Responder Con Cita
 
Respuesta


Herramientas
Desplegado

Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Trackbacks are habilitado
Pingbacks are habilitado
Refbacks are habilitado


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





Powered by: vBulletin, Versión 3.6.8
Derechos de Autor ©2000 - 2008, Jelsoft Enterprises Ltd.

LinkBacks Enabled by vBSEO 3.1.0 © 2007, Crawlability, Inc.