gremio10 14 Denunciar post Postado Fevereiro 24, 2015 Boa tarde, Eu tenho uma tabela que armazena dois registros por dia de cada usuário. Ele salva o id do usuário e a data com hora. Preciso fazer uma consulta que me retorne os dois horários do dia em uma unica linha, referente aquele usuário. Ex.: users_id created_at 1 2015-02-24 17:20:54 1 2015-02-24 18:00:00 2 2015-02-24 09:00:00 2 2015-02-24 18:24:09 Eu tentei fazendo assim: SELECT DISTINCT s.users_id, (SELECT created_at FROM schedules WHERE schedules_type_id = 1 AND users_id = s.users_id) AS entrada, (SELECT created_at FROM schedules WHERE schedules_type_id = 2 AND users_id = s.users_id) AS saida FROM schedules s Mas não tive resultado. Essa é a estrutura da minha tabela: CREATE TABLE `schedules` ( `id` int(11) NOT NULL AUTO_INCREMENT, `users_id` int(11) DEFAULT NULL, `schedules_type_id` int(11) DEFAULT NULL, `created_at` datetime NOT NULL, `updated_at` datetime NOT NULL, PRIMARY KEY (`id`), KEY `IDX_313BDC8E67B3B43D` (`users_id`), KEY `IDX_313BDC8E692AF56F` (`schedules_type_id`), CONSTRAINT `FK_313BDC8E692AF56F` FOREIGN KEY (`schedules_type_id`) REFERENCES `schedules_type` (`id`), CONSTRAINT `FK_313BDC8E67B3B43D` FOREIGN KEY (`users_id`) REFERENCES `users` (`id`) ) ENGINE=InnoDB AUTO_INCREMENT=6 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci Obrigado pela ajuda. Compartilhar este post Link para o post Compartilhar em outros sites
Motta 645 Denunciar post Postado Fevereiro 24, 2015 Solucões possíveis que vejo : 1 montar dois selects como tabelas virtuais , separando pelo type_id , fazer um join destas duas tabelas pelo users_id 2 um select apenas e usar combinação de CASE com MAX Compartilhar este post Link para o post Compartilhar em outros sites
gremio10 14 Denunciar post Postado Fevereiro 25, 2015 Obrigado Motta, eu consegui fazer usando a segunda opção que tu falou. SELECT id, users_id, MAX(CASE WHEN schedules_type_id = 1 THEN created_at END) AS 'Entrada', MAX(CASE WHEN schedules_type_id = 2 THEN created_at END) AS 'Saída' FROM schedules GROUP BY users_id, DATE_FORMAT( created_at, '%Y-%m-%d' ); Obrigado! Compartilhar este post Link para o post Compartilhar em outros sites