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

Asignar resultado consulta a variable y usar

Estas en el tema de Asignar resultado consulta a variable y usar en el foro de Mysql en Foros del Web. Hola. Estoy tratando de conseguir lo siguiente. Tengo una tabla llamada cargos_cargos con dos campos, Id_CIF e Id_Web. Quiero ejecutar una consulta que me devuelva ...
  #1 (permalink)  
Antiguo 16/12/2014, 16:40
 
Fecha de Ingreso: mayo-2009
Mensajes: 742
Antigüedad: 14 años, 11 meses
Puntos: 6
Asignar resultado consulta a variable y usar

Hola. Estoy tratando de conseguir lo siguiente. Tengo una tabla llamada cargos_cargos con dos campos, Id_CIF e Id_Web.
Quiero ejecutar una consulta que me devuelva todos los registros cuando Id_CIF sea = 1 y el resultado guardarlos para seguidamente, ejecutar otra consulta sobre esto que ha devuelto y que me de los resultados cuando Id_Web = 1. Todo programando con Mysql.
Para ello, he hecho esto, pero no me funciona:
Código MySQL:
Ver original
  1. select @vari AS Id_CIF, Id_Web from cargos_cargos c where c.Id_CIF = 1;
  2. select count(*) from @vari where Id_Web = 1;
Ya se que se podria hacer todo a la vez en una sola consulta, pero estoy tratando de aprender a programar con mysql.
  #2 (permalink)  
Antiguo 16/12/2014, 17:10
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: Asignar resultado consulta a variable y usar

Cita:
Estoy tratando de conseguir lo siguiente. Tengo una tabla llamada cargos_cargos con dos campos, Id_CIF e Id_Web.
Quiero ejecutar una consulta que me devuelva todos los registros cuando Id_CIF sea = 1 y el resultado guardarlos para seguidamente, ejecutar otra consulta sobre esto que ha devuelto y que me de los resultados cuando Id_Web = 1. Todo programando con Mysql.
En MySQL no puedes hacer eso porque no existen ni los array, ni las collections, ni tampoco los tipos de dato COLUMN, RECORD o TABLE.
Esos tipos de objetos existen en otros DBMS, pero no es el caso de MySQL.
Cita:
Ya se que se podria hacer todo a la vez en una sola consulta, pero estoy tratando de aprender a programar con mysql.
MySQL no es un lenguaje de programación, por lo que no puedes "programar" en un sentido estricto. Lo que sí existe es un lenguaje procedural como en otros DBMS (p.e. T-SQL en SQL Server y PL/SQL en Oracle), que se usa para crear stored procedures, stored funcions, triggers y events. Pero funciona algo distinto.
Lo que quieres hacer es perfectamente posible dentro de un SP, usando tablas de tipo TEMPORARY, así como haciendo lo mismo en secuencias de sentencias ejecutadas sobre la misma conexión, en forma secuencial.
Usar variables para almacenar una cadena de valores obtenidos en una consulta con uso de funciones es posible, pero luego tendrías que crear una sentencia preparada (algo especial), que es un tipo de objeto de BBDD algo peligroso para manipular con liviandad.

Lo que quieres hacer es perfectamente posible así:
Código SQL:
Ver original
  1. CREATE TEMPORARY TABLE tablatemp
  2. AS SELECT Id_CIF, Id_Web
  3. FROM cargos_cargos c
  4. WHERE c.Id_CIF = 1;
  5.  
  6. SELECT COUNT(*) TOTALVARI
  7. FROM tablatem
  8. WHERE Id_Web = 1;

Nota: Deben ejecutarse en forma seguida y sin cerrar la conexión usada en la primera porque al cerrarse esta la tabla creada desaparecerá.
Nota 2: Esa tabla sólo es visible en esa conexión. Si abres una conexión paralela, aunque sea con el mismo usuario no la verás.
__________________
¿A quién le enseñan sus aciertos?, si yo aprendo de mis errores constantemente...
"El problema es la interfase silla-teclado." (Gillermo Luque)
  #3 (permalink)  
Antiguo 17/12/2014, 01:29
 
Fecha de Ingreso: mayo-2009
Mensajes: 742
Antigüedad: 14 años, 11 meses
Puntos: 6
Respuesta: Asignar resultado consulta a variable y usar

Hola Gnzsoloyo.

Muchas gracias por tu respuesta, clara, concisa y completa.

Con eso tengo mas que suficiente para ir haciendo cositas.

Gracias de verdad. Un saludo.

Etiquetas: campo, registro, resultado, select, sql, tabla, usar, variable
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 22:32.