Duas Chaves estrangeiras iguais para uma consulta diferente
Pessoal como já comentei em outro topico estou desenvolvendo um sistema de apontamento de horas.
Está ficando muito bacana na verdade já estava pronto, porem achei bacana criar uma aprovação do gerente ai que estou encontrando problema.
time_data (armazena apontamento)
-- Estrutura da tabela time_data
--
CREATE TABLE IF NOT EXISTS `time_data` (
`time_id` int(10) NOT NULL AUTO_INCREMENT,
`user_id` int(10) NOT NULL DEFAULT '0',
`function_fk` int(10) NOT NULL,
`data_date` date DEFAULT NULL,
`type_id` int(10) NOT NULL DEFAULT '0',
`work_id_fk` int(10) NOT NULL,
`hours` double DEFAULT NULL,
`notes` text,
`user_appro_fk` int(10) DEFAULT NULL,
`status_appro` char(1) NOT NULL,
PRIMARY KEY (`time_id`),
KEY `user_id` (`user_id`),
KEY `type_id` (`type_id`),
KEY `work_id_fk` (`work_id_fk`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=7 ;
--
-- Extraindo dados da tabela time_data
--
tabela de usuarios
-- Estrutura da tabela user_info
--
CREATE TABLE IF NOT EXISTS `user_info` (
`user_id` int(10) NOT NULL AUTO_INCREMENT,
`fname` varchar(50) DEFAULT NULL,
`lname` varchar(50) DEFAULT NULL,
`function_id_fk` int(10) NOT NULL DEFAULT '0',
`level` varchar(20) NOT NULL DEFAULT 'User',
`username` varchar(30) NOT NULL DEFAULT '',
`password` varchar(40) NOT NULL DEFAULT '',
PRIMARY KEY (`user_id`),
KEY `function_id_fk` (`function_id_fk`),
KEY `function_id_fk_2` (`function_id_fk`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=8 ;
--
-- Extraindo dados da tabela user_info
Eu preciso gerar uma consulta assim:
Nome Completo | Função | Data | Tipo Horas | Projeto | obs | Aprovado | Aprovador
Porem estou me enrroscando para mostrar o aprovador, pois na verdade estou trabalhando com duas chaves estrangeiras, user_id e user_appro_fk, ambas trazem dados de uma unica tabela que é a user_info
Basicamente até agora montei a seguinte consulta:
select usr.fname, usr.lname, fun.function_desc, dat.function_fk, DATE_FORMAT(dat.data_date, '%d/%m/%Y') AS date_br, wor.work_name, dat.hours,
pro.description, dat.notes, dat.status_appro, CASE dat.status_appro
WHEN 'S' THEN 'Sim'
WHEN 'N' THEN 'Não'
END as status_appro, dat.user_appro_fk
from
user_info usr, user_functions fun, time_work wor, time_types pro, time_data dat
where dat.function_fk = fun.function_id and usr.user_id = dat.user_id and dat.type_id = pro.type_id and dat.work_id_fk = wor.work_id
and dat.user_id LIKE '%$user_id%' and dat.type_id LIKE '%$type_id%' and dat.status_appro LIKE '%$status_appro%' and dat.data_date between '$start_date' and '$end_date'
order by dat.data_date desc
os dados apresentado ficaram assim:
Nome Completo Função Data Tipo Horas Projeto obs Aprovado Aprovador
Marcos Sandrini Auxiliar de T.I 12/10/2013 HN 4 TESTE Sim 1
resumindo estou tendo problemas para mostrar o nome do aprovador, pois ja estou usando a consulta para mostrar o nome completo do usuário
Discussão (6)
Carregando comentários...