From: | Calabaza <calalinux(at)gmail(dot)com> |
---|---|
To: | pgsql-es-ayuda(at)postgresql(dot)org |
Subject: | Re: [pgsql-es-ayuda] Consulta diseño |
Date: | 2009-04-15 15:31:01 |
Message-ID: | 958993320904150831x6df7244er92ffa92f59dcca97@mail.gmail.com |
Views: | Raw Message | Whole Thread | Download mbox | Resend email |
Thread: | |
Lists: | pgsql-es-ayuda |
El día 15 de abril de 2009 10:53, Linos <info(at)linos(dot)es> escribió:
> Hola,
> estoy guardando una información en mis tablas de una manera que no me
> parece la
> mas correcta (pero no se me ocurre ninguna mejor) y ya que es un problema
> tan
> común y que muchos de vosotros sabéis muchos de bases de datos y
> específicamente
> de postgresql probablemente me podáis recomendar una solución mejor para
> esto.
> Se me da en alguna entidad mas pero poniendo por ejemplo albaranes de
> salida.
luego de buscar que es "albaranes de salida"
http://www.google.com.py/search?hl=es&q=que+es+albaranes+de+salida&btnG=Buscar+con+Google&meta=
Empiezo a entender tu problema....
> yo tengo los clientes separados en sus tablas en función de las necesidades
> de
> los campos de sus tablas, en este caso tengo 3 tablas de clientes:
> -cliente, empresa_cliente y empresa_grupo, los almaceno separados pq sus
> columnas no son las mismas.
Podrias mostrar los create table de cada uno por favor?
Creo que deberia quedar algo asi:
Una empresa_grupo posee varias empresa_cliente y esa empresa_cliente
posee varios clientes.
lo que sería en un pseudo diagrama de entidad/relacion:
empresa_grupo 1 ---<poseee>---- N empresa_cliente
empresa_cliente 1 --<posee> ------ N clientes
Pero realmente no se cual sea tu nececidad...
> claro cuando voy a hacer un albaran de salida tengo q especificar el tipo de
> cliente y el id del cliente en la tabla en cuestión, uso en la tabla de
> albaranes de salida los campos "tipo_cliente" e "id_cliente" para guardar
> estos
> valores.
> Cuando quiero hacer una consultar a los albaranes de salida donde muestre el
> nombre del cliente tengo que hacer o:
>
> SELECT cab.numero_albaran,
> CASE
> WHEN tipo_cliente = 'CLIENTE' THEN cli.nombre
> WHEN tipo_cliente = 'CLIENTE EMPRESA' THEN cli_emp.nombre
> WHEN tipo_cliente = 'CLIENTE GRUPO' THEN cli_grp.nombre
> ELSE NULL
> FROM albaran_salida_cabecera AS cab
> LEFT JOIN cliente AS cli ON cli.id_cliente = cab.id_cliente
> LEFT JOIN cliente_empresa AS cli_emp ON cli_emp.id_cliente =
> cab.id_cliente
> LEFT JOIN empresa_grupo AS cli_grp ON cli_grp.id_cliente =
> cab.id_cliente;
>
> o esto:
>
> SELECT cab.numero_albaran,
> cli.nombre
> FROM albaran_salida_cabecera AS cab
> JOIN cliente AS cli ON cli.id_cliente = cab.id_cliente
> WHERE tipo_cliente = 'CLIENTE'
> UNION ALL
> SELECT cab.numero_albaran,
> cli_emp.nombre
> FROM albaran_salida_cabecera AS cab
> JOIN cliente_empresa AS cli_emp ON cli_emp.id_cliente = cab.id_cliente
> WHERE tipo_cliente = 'CLIENTE EMPRESA'
> UNION ALL
> SELECT cab.numero_albaran,
> cli_grp.nombre
> FROM albaran_salida_cabecera AS cab
> JOIN empresa_grupo AS cli_grp ON cli_grp.id_cliente = cab.id_cliente
> WHERE tipo_cliente = 'EMPRESA GRUPO';
>
> El caso es q todo esto me parece una solución muy extraña para lo que pienso
> debería ser un problema mas común, como creéis que debería rediseñar esto?
>
> Gracias y un saludo,
> Miguel Angel.
>
> --
> TIP 8: explain analyze es tu amigo
>
Un abrazo.
--
§~^Calabaza^~§ from Villa Elisa, Paraguay
From | Date | Subject | |
---|---|---|---|
Next Message | Moises Alberto Lindo Gutarra | 2009-04-15 15:35:37 | Re: [pgsql-es-ayuda] Consulta diseño |
Previous Message | Emanuel Calvo Franco | 2009-04-15 15:07:22 | Re: postgres plus |