[C con Clase] [MySQL] Duda al generar Vista en MySQL

Jesus Rafael Lopez Ibarra mintaka.star en gmail.com
Sab Abr 30 20:09:41 CEST 2011


Hola Gaston,

por aqui puedo contestar? , nunca habia usado la lista xD, estoy haciendo
como un reply a los mails que me llegan =S

mira talvez lo que preguntas es como mostrar a veces el campo de una tabla y
a veces el campo de otra, en una misma columna de la vista, si no es asi
esto no te servira, pero si si , pues si jaajja XD

mira

SELECT CASE WHEN 1>0 THEN 'true' ELSE 'false' END;


de
http://dev.mysql.com/doc/refman/5.0/es/control-flow-functions.html

digamos
------------------------------------------------------------------------------------------------
select case when (alguna condicion booleana) then principal.propiedades else
subtabla.propiedades end ;
------------------------------------------------------------------------------------------------

o talvez le agregas el 'as'
------------------------------------------------------------------------------------------------
select case when (alguna condicion booleana)
             then
                principal.propiedades
             else
                subtabla.propiedades
          end *as propiedades* ;
------------------------------------------------------------------------------------------------

Saludos xD

2011/4/30 Mariano Demarchi <marchi.hh en gmail.com>

> Hola Gastón, no termino de captar la idea de cual es tu objetivo para crear
> la vista.
> De todas maneras, no creo que lo que comenta Gilberto te sirva dado que en
> realidad termina haciendo un producto cartesiano entre ambas tablas, lo cual
> pocas veces es lo deseado.
>
> Donde decís "*Entonces mi consulta es "Como puedo hacer para tomar el
> campo de uno u otra tabla según corresponda".*", ¿cuál sería la forma de
> decidir si corresponde el campo de una u otra tabla?
>
>
> Suponiendo que en la tabla de propiedades tenés los siguientes campos:
> id_propiedad, capacidad, cantidad, dimensiones.
> Mientras que en la tabla de subpropiedades tenés: id_propiedad,
> id_subpropiedad, capacidad, cantidad, dimensiones.
>
> Una vista que podría serte útil (sin saber realmente lo que necesitás)
> sería la que utiliza la siguiente consulta.
>
> SELECT
>   p.id_propiedad AS 'propiedad',
>   '' AS 'subpropiedad',
>   (SELECT SUM(capacidad) FROM tab_subpropiedades WHERE id_propiedad =
> p.id_propiedad) AS 'capacidad calculada',
>   p.capacidad AS 'capacidad',
>   p.cantidad AS 'cantidad',
>   p.dimensiones
> FROM
>   tab_propiedades AS p,
> UNION
> SELECT
>   s.id_propiedad AS 'propiedad',
>   s.id_subpropiedad AS 'subpropiedad',
>   s.capacidad AS 'capacidad calculada',
>   s.capacidad AS 'capacidad',
>   s.cantidad AS 'cantidad',
>   s.dimensiones
> FROM
>   tab_subpropiedades AS s
>
>
> Con esta consulta lo que lograrás será mostrar el id_propiedad, el
> id_subpropiedad (solo cuando se trate de una subpropiedad), la capacidad
> calculada de una propiedad como suma de las capacidades de todas sus
> subpropiedades, etc.
>
> Acá tendrás un registro por cada propiedad y por cada subpropiedad.
> Aplicándole un ORDER BY por id_propiedad y por id_subpropiedad ASC tendrás
> primero una propiedad y luego sus subpropiedades (en caso de haberlas) y
> luego otra propiedad y su respectivas subpropiedades hasta acabar el
> listado.
>
>
> También te podría ser útil averiguar sobre la función
> DECODE(in,c1,v1,c2,v2,....,cN,vN,[vD]) que dado un valor in devolverá
> v1,v2,...,vN en caso de que el primero de c1,c2,...,cN sea igual a in, vD en
> caso de no coincidir con ninguno.
>
> Pero como decía al principio, no entiendo realmente que es lo que estás
> buscando, asi que no puedo ayudarte mucho mas de momento.
>
>
> Saludos
>
> El 18 de abril de 2011 16:25, Gilberto Cuba Ricardo <
> gilberto.cuba en ucp.ho.rimed.cu> escribió:
>
> Gastón Borysiuk escribió:
>>
>> > Hola Gente
>>
>> Hola Gastón,
>>
>> > Tengo armada una base de datos en el trabajo que tiene que ver con
>> > propiedades.
>>
>> > Es una DB relacional, el problema es que quiero crear una vista en base
>> > a 2 tablas.
>>
>> > Por un lado la tabla de `propiedades` y por otro la de `subpropiedades`.
>>
>> > Me pidieron diferentes cosas para ordenarlos por campo etc, a su vez
>> > esto está relacionado con stock y con precios.
>>
>> > Dije, bueno perfecto hago una vista que me englobe ambas tablas y
>> > soluciono el problema.
>>
>> > Ahora me encuentro con un dilema :D y es donde apunta mi problema.
>>
>> Bueno, trataremos de ayudarte aunque no me considero especialista en
>> el tema. :)
>>
>> > Tengo algunos campos como por ej `Capacidad`, `cantidad` `dimensiones`
>> > etc tanto en la tabla propiedades como en la tabla subpropiedades.
>>
>> > Entonces mi consulta es "Como puedo hacer para tomar el campo de uno u
>> > otra tabla según corresponda".
>>
>> Veamos, supongamos que vamos a hacer algo contextualizado a lo que
>> dices; a forma de ejemplo sería:
>>
>> CREATE VIEW vista_propiedades AS
>>  SELECT
>>    t1.capacidad,
>>    t2.capacidad,
>>    t1.capacidad+t2.capacidad AS capacidad_total,
>>    t1.cantidad,
>>    t2.cantidad,
>>    t1.dimensiones
>>  FROM
>>    tab_propiedades AS t1,
>>    tab_subpropiedades AS t2
>>
>> En nuestro ejemplo luego del FROM he puesto los nombres de las tablas
>> y a continuación con "AS" les doy un alias (t1, para la tabla
>> 'propiedades' y t2, para la tabla 'subpropiedades'). Con esto ya me
>> ahorro estar escribiendo tanto en el SELECT, y entonces para referirmo
>> al campo capacidad de la tabla propiedades sería: t1.capacidad; y así
>> sucesivamente con los que he puesto.
>>
>> SELECT * FROM vista_propiedades
>>
>> Luego seleccionamos la vista que hemos creado y listo.
>>
>> > Otra cosa a tener en cuenta, `propiedades` viene a ser la tabla
>> > principal y `subpropiedades` es la que depende de `propiedades` en
>> > cuanto a relación.
>>
>> > Yo la vista la creo desde `subpropiedades` por que pueden haber mas de
>> > una subpropiedad por cada propiedad.
>>
>> > Desde ya muchas gracias y saludos!
>>
>> --
>> Saludos,
>>  Gilberto Cuba Ricardo
>>
>>
>> _______________________________________________
>> Lista de correo Cconclase Cconclase en listas.conclase.net
>> http://listas.conclase.net/mailman/listinfo/cconclase_listas.conclase.net
>> Bajas: http://listas.conclase.net/index.php?gid=2&mnu=FAQ
>>
>
>
> _______________________________________________
> Lista de correo Cconclase Cconclase en listas.conclase.net
> http://listas.conclase.net/mailman/listinfo/cconclase_listas.conclase.net
> Bajas: http://listas.conclase.net/index.php?gid=2&mnu=FAQ
>



-- 
____________________________________________________

      Mintaka...The rightmost of the stars of the belt...

        http://www.rafavende.tk/
        http://mintakastar.wordpress.com/
        http://blog.chess.com/MINTAKASTAR

<http://blog.chess.com/MINTAKASTAR>   got chess?? beat me !
        http://www.chess.com/members/view/MINTAKASTAR
____________________________________________________
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://listas.conclase.net/pipermail/cconclase_listas.conclase.net/attachments/20110430/42d33fc5/attachment.html>


Más información sobre la lista de distribución Cconclase