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 originalCREATE TEMPORARY TABLE tablatemp
AS SELECT Id_CIF, Id_Web
FROM cargos_cargos c
WHERE c.Id_CIF = 1;
SELECT COUNT(*) TOTALVARI
FROM tablatem
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.