Foros del Web » Programación para mayores de 30 ;) » Bases de Datos General » Mysql »

duda con vistas

Estas en el tema de duda con vistas en el foro de Mysql en Foros del Web. la duda es simple vi en el manual de mysql que se pueden crear vistas y entiendo que estas me simplifican las consultas lo que ...
  #1 (permalink)  
Antiguo 09/03/2011, 09:54
 
Fecha de Ingreso: noviembre-2010
Mensajes: 181
Antigüedad: 13 años, 5 meses
Puntos: 2
duda con vistas

la duda es simple vi en el manual de mysql que se pueden crear vistas y entiendo que estas me simplifican las consultas lo que no entiendo o es que estoy confundido es que dice una nota que no puedo utilizar varibales del sistema ni variables de usuario.
por ejemplo me encontre en mysql este ejemplo:

mysql> CREATE TABLE t (qty INT, price INT);
mysql> INSERT INTO t VALUES(3, 50);
mysql> CREATE VIEW v AS SELECT qty, price, qty*price AS value FROM t;
mysql> SELECT * FROM v;
+------+-------+-------+
| qty | price | value |
+------+-------+-------+
| 3 | 50 | 150 |
+------+-------+-------+
esto sirve desde la consola de mysql pero que pasa si el numero 3 lo mando desde un formulario ¿eso no es posible? o es que esto va con la intencion de que la columna value sea creada solamente cuando se ejecute la consulta?
espero me puedan sacar de esta duda
  #2 (permalink)  
Antiguo 09/03/2011, 10:00
Avatar de huesos52
Colaborador
 
Fecha de Ingreso: febrero-2009
Ubicación: Manizales - Colombia
Mensajes: 5.980
Antigüedad: 15 años, 2 meses
Puntos: 360
Respuesta: duda con vistas

Hola tuxceno.

para el ejemplo que pones no tendrías problemas si mandas una variable desde un formulario.
Con variables del sistema se refiere a variables especiales que utiliza mysql para consultas de administración o cosas por el estilo.

saludos
__________________
Without data, You are another person with an opinion.
W. Edwads Deming
  #3 (permalink)  
Antiguo 09/03/2011, 12:40
 
Fecha de Ingreso: noviembre-2010
Mensajes: 181
Antigüedad: 13 años, 5 meses
Puntos: 2
Respuesta: duda con vistas

Gracias uesos52 eso es lo que no me quedaba claro peron entonces si puedo hacer lo siguiente?

mysql> CREATE VIEW v AS SELECT qty, price, qty*$mivariable AS value FROM t;

y mi variable es $mivariable=$_POST['cantidad'];

entendiendo que dices que si puedo hacer eso con una vista es correcto?
  #4 (permalink)  
Antiguo 09/03/2011, 12:51
Avatar de huesos52
Colaborador
 
Fecha de Ingreso: febrero-2009
Ubicación: Manizales - Colombia
Mensajes: 5.980
Antigüedad: 15 años, 2 meses
Puntos: 360
Respuesta: duda con vistas

asi asi... no

ya que si mandas esto desde un php, se crea una vista llamada v. Y esta no es removida. Si tratas de crear otra vista (también se llamaría v) te va a decir que ya existe.

Lo que si te funcionaría sería desde php llamar un registro de la vista.

SELECT qty FROM v WHERE price=$valor_price
__________________
Without data, You are another person with an opinion.
W. Edwads Deming
  #5 (permalink)  
Antiguo 09/03/2011, 13:30
 
Fecha de Ingreso: noviembre-2010
Mensajes: 181
Antigüedad: 13 años, 5 meses
Puntos: 2
Respuesta: duda con vistas

entonces seria lo mismo lo que tu dices

Código SQL:
Ver original
  1. SELECT qty FROM v WHERE price=$valor_price
a hacer

Código SQL:
Ver original
  1. [CODE]mysql> CREATE VIEW OR REPLACE v AS SELECT qty, price, qty*$mivariable AS VALUE FROM t;

si estoy en lo correcto hazmelo saber y si no es correcto lo que digo no importa ya entendi tu explicacion y si me sirve lo que me dices
gracias huesos52
  #6 (permalink)  
Antiguo 09/03/2011, 13:42
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 4 meses
Puntos: 2658
Respuesta: duda con vistas

Nada que ver.
Una VIEW es en esencia una sentencia SELECT precompilada que se comporta como una tabla virtual.
Se define una sola vez y se invoca luego como si fuese una tabla real, con la diferencia que (en MySQL) no puede usarse para realizar actualizaciones (UPDATE o DELETE).
Permiten entre otras cosas, dar acceso a los usuarios a información en modo restringido, aumentando la seguridad, especialmente para información privilegiada. También se usa para obtener información preformateada, realizar agrupaciones fijas, y un largo etcétera.
En seguridad, como una VIEW sólo puede ser leída, también son invulnerables al sql-injection, por ejemplo.

En tu caso, es como dice Huesos52: Primero tienes que crearla, y luego la usas cuantas veces quieras.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #7 (permalink)  
Antiguo 09/03/2011, 17:37
 
Fecha de Ingreso: noviembre-2010
Mensajes: 181
Antigüedad: 13 años, 5 meses
Puntos: 2
Respuesta: duda con vistas

ok gracias gnzsoloyo es que mi duda estaba en que si es posible mandarle variables para que me devuelva lo que necesito

por ejemplo tengo esta vista:

Código SQL:
Ver original
  1. CREATE VIEW `base`.`preciosAnteriores` AS SELECT
  2. nombre_material,unidad_medida,tamano,medida,tipo,marca, precio_ant,fecha_antdact,nombreProv
  3. FROM material,mat_anterior,proveedor WHERE mat_anterior.material_idmaterial=material.idmaterial
  4. AND mat_anterior.idproveedor=material.proveedor_idproveedor
  5. AND material.proveedor_idproveedor=proveedor.idproveedor;

donde esta lista me devuelve todos los precios anteriores de un material y a la vez me devuelve todos los proveedores.
pero lo que necesito es hacer esa misma vista pero que yo en un formulario php elija de un input-select el proveedor y me devuelva solo los precios anteriores de un solo proveedor. eso me implica que en la sentencia ponga ademas de lo que esta
Código SQL:
Ver original
  1. AND proveedor.idproveedor=$valordel_combobox
eso si lo puedo hacer en realidad es lo que quiero saber

o al final de cuentas vale la pena quitar lo de la vista y manejarlo como una consulta normal?
  #8 (permalink)  
Antiguo 09/03/2011, 18:47
 
Fecha de Ingreso: noviembre-2010
Mensajes: 181
Antigüedad: 13 años, 5 meses
Puntos: 2
Respuesta: duda con vistas

creo que ya entendi lo de las famosas vistas y es quizas lo que yo no compredia pero gracias a lo que dijiste gnzsoloyo ya comprendi

el ejemplo que postee de vistas se puede decir que esta mal por que aunque me dejo crearla no es lo optimo por que esa se vuelve una vista estatica.
entonces segun lo que entendi es que si le quito el where y creo la vista agrupo los datos que voy a necesitar mas adelante y en vez de estar creando consultas complejas a la consulta que haga ahora a la vista creada le pongo la condicion que yo requiera y listo eso me simplifica mis consultas es correcto?
  #9 (permalink)  
Antiguo 09/03/2011, 19:31
Avatar de gnzsoloyo
Moderador criollo
 
Fecha de Ingreso: noviembre-2007
Ubicación: Actualmente en Buenos Aires (el enemigo ancestral)
Mensajes: 23.324
Antigüedad: 16 años, 4 meses
Puntos: 2658
Respuesta: duda con vistas

Exacto. Ese es el sentido de las vistas: tablas virtuales que siempre están actualizadas, porque leen los datos dinámicamente.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #10 (permalink)  
Antiguo 10/03/2011, 08:34
 
Fecha de Ingreso: noviembre-2010
Mensajes: 181
Antigüedad: 13 años, 5 meses
Puntos: 2
Respuesta: duda con vistas

Gracias gnzsoloyo

ahora si creo que le encontre la aplicacion a las vistas.

Etiquetas: vistas
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




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