Un saludo y bueno también de camino felices fiestas a los usuarios del foro, en principio comento lo que tengo hecho y a lo que quiero llegar pero no puedo, ¿OK?.
Nota: no es para un ejercicio de clase ni nada por el estilo es un pique mío interno jojojo
TABLAS:
DROP TABLE IF EXISTS usuario;
CREATE TABLE usuario(
id_usuario int(11) auto_increment,
dni varchar(9) not null unique,
nombre varchar(100) not null unique,
profesion varchar(100) not null,
anio_nac int(11) not null,
sexo varchar(6) not null,
direccion varchar(150) not null,
cp int(11) not null,
poblacion varchar(50) not null,
barrio varchar(50) not null,
telf_1 int(11) not null,
telf_2 int(11),
email varchar(50) not null,
nick varchar(15) not null,
pass varchar(15) not null,
horas_disponibles int(11) default 0,
PRIMARY KEY(id_usuario)
)ENGINE=InnoDB;
DROP TABLE IF EXISTS movimiento;
CREATE TABLE movimiento(
id_movimiento int(11) auto_increment,
id_usuario int(11) not null,
id_actividad int(11) not null,
oferta tinyint(1),
demanda tinyint(1),
fecha date,
horas_empleadas int(11) default 0, -- horas empleadas en el movimiento
estado tinyint(1),
PRIMARY KEY(id_movimiento)
)ENGINE=InnoDB;
Necesito una consulta que me realize lo siguiente:
SELECCIONA LAS PERSONAS QUE DEMANDEN ALGO Y TENGAN UNA HORA MINIMA DISPONIBLE Y QUE ADEMAS NO HAYAN SOLICITADO
MAS DE 2 HORAS:
Pero he llegado hasta la siguiente consulta:
CONSULTA 1:
SELECCIONA LOS USUARIOS QUE TENGAN ALGÚN MOVIMIENTO Y MUESTRE LAS HORAS USADAS POR CADA UNO:
SELECT usuario.id_usuario,usuario.nombre,movimiento.id_ac tividad,SUM(movimiento.horas_empleadas) AS TOTAL_HORAS,movimiento.id_usuario
FROM usuario,movimiento
WHERE movimiento.id_usuario = usuario.id_usuario
GROUP BY movimiento.id_usuario
RESULTADO CONSULTA 1:
id_usuario nombre id_actividad TOTAL_HORAS id_usuario
1 uss1 4 8 1
2 uss2 1 2 2
3 uss3 1 2 3
Hasta aquí bien pero ahora necesito "filtrar" los campos que tengan un TOTAL_HORAS mayor que 2, el problema es que he provado muchas consultas, y claro la tabla TOTAL_HORAS es un alias y no está en la tabla creada así que mysql me devuelve un error, no sé entonces si se puede con mysql hacer eso, así que quiero que echeis una mano o si no acabaré haciendolo con php y ya está, solo quería saber si había forma con mysql. Al grano esto es lo que yo conseguí:
SELECT usuario.id_usuario,usuario.nombre,movimiento.id_ac tividad,SUM(movimiento.horas_empleadas) AS TOTAL_HORAS,movimiento.id_usuario
FROM usuario,movimiento
WHERE movimiento.id_usuario = usuario.id_usuario
AND TOTAL_HORAS < 8
GROUP BY movimiento.id_usuario;
Evidentemente esto no funciona pero era para que lo vieseis.
Gracias por vuestra atención. Por cierto a que molan lo coloritos ^^_