Estou tendo uma certa dificuldade pra criar uma query avançada (pelo menos pra mim). Será que alguém poderia me ajudar?
É o seguinte:
Tenho as tabelas: arquivo, arquivo_grupo, grupos, usuarios, usuarios_download, usuario_grupo.
Tenho uma página que lista um relatório de quais usuários baixou qual arquivo e quando baixou, com a seguinte query:
SELECT
arquivo.nome_arquivo as NomeArquivo,
arquivo.legenda_arquivo as LegendaArquivo,
usuarios.nome_usuario as NomeUsuario,
usuarios.sobrenome_usuario as SobrenomeUsuario,
usuario_download.data_download as DataDownload
FROM arquivo
INNER JOIN (usuario_download LEFT JOIN usuarios ON
usuario_download.id_usuario = usuarios.id_usuario)
ON arquivo.id_arquivo = usuario_download.id_arquivo
order by NomeArquivo Desc
E funciona perfeitamente.
Logo, esta lista será longa com o passar do tempo. Portanto, criei um combobox com todos os grupos onde poderei escolherei por qual grupo quero listar o relatório (filtrar).
Aí entra o problema. Como eu poderia fazer esse novo QUERY? Alguém tem a solução?
Para quem puder me ajudar e quiser o banco pra testar:
/*
SQLyog Community v9.51
MySQL - 5.1.54-rel12.5-log : Database - BDteste
*********************************************************************
*/
/*!40101 SET NAMES utf8 */;
/*!40101 SET SQL_MODE=''*/;
/*!40014 SET @OLD_UNIQUE_CHECKS=@@UNIQUE_CHECKS, UNIQUE_CHECKS=0 */;
/*!40014 SET @OLD_FOREIGN_KEY_CHECKS=@@FOREIGN_KEY_CHECKS, FOREIGN_KEY_CHECKS=0 */;
/*!40101 SET @OLD_SQL_MODE=@@SQL_MODE, SQL_MODE='NO_AUTO_VALUE_ON_ZERO' */;
/*!40111 SET @OLD_SQL_NOTES=@@SQL_NOTES, SQL_NOTES=0 */;
CREATE DATABASE /*!32312 IF NOT EXISTS*/`BDteste` /*!40100 DEFAULT CHARACTER SET latin1 COLLATE latin1_general_ci */;
USE `BDteste`;
/*Table structure for table `arquivo` */
DROP TABLE IF EXISTS `arquivo`;
CREATE TABLE `arquivo` (
`id_arquivo` int(11) NOT NULL AUTO_INCREMENT,
`legenda_arquivo` varchar(128) NOT NULL,
`nome_arquivo` varchar(128) NOT NULL,
`url_arquivo` varchar(512) NOT NULL,
`comentario_arquivo` text NOT NULL,
`tipo_arquivo` varchar(60) NOT NULL,
`tamanho_arquivo` varchar(40) NOT NULL,
`data_envio` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,
PRIMARY KEY (`id_arquivo`)
) ENGINE=InnoDB AUTO_INCREMENT=14 DEFAULT CHARSET=latin1;
/*Data for the table `arquivo` */
insert into `arquivo`(`id_arquivo`,`legenda_arquivo`,`nome_arquivo`,`url_arquivo`,`comentario_arquivo`,`tipo_arquivo`,`tamanho_arquivo`,`data_envio`) values (10,'Teste de legenda','1327327647agua_viva_cc.jpg','arquivos/1327327647agua_viva_cc.jpg','Um script de menu em árvore','jpg','757.52 KB','2012-01-23 12:07:27'),(11,'Teste','1327332950teste_sem_espaco_ae.doc','arquivos/1327332950teste_sem_espaco_ae.doc','teste','doc','21.50 KB','2012-01-23 13:35:50'),(12,'Teste 2','1327333217twitter.jpg','arquivos/1327333217twitter.jpg','teste','jpg','1.19 MB','2012-01-23 13:40:17'),(13,'Teste 3','1327333376twitter_copia.jpg','arquivos/1327333376twitter_copia.jpg','teste','jpg','13.41 MB','2012-01-23 13:42:56');
/*Table structure for table `arquivo_grupo` */
DROP TABLE IF EXISTS `arquivo_grupo`;
CREATE TABLE `arquivo_grupo` (
`id_arquivo` int(11) NOT NULL,
`id_grupo` int(11) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
/*Data for the table `arquivo_grupo` */
insert into `arquivo_grupo`(`id_arquivo`,`id_grupo`) values (10,13),(11,13),(12,13),(13,14);
/*Table structure for table `grupos` */
DROP TABLE IF EXISTS `grupos`;
CREATE TABLE `grupos` (
`id_grupo` int(11) NOT NULL AUTO_INCREMENT,
`nome_grupo` varchar(60) NOT NULL,
`logo_grupo` varchar(128) DEFAULT NULL,
`info_grupo` varchar(512) DEFAULT NULL,
`cor_grupo` varchar(20) DEFAULT NULL,
PRIMARY KEY (`id_grupo`)
) ENGINE=InnoDB AUTO_INCREMENT=17 DEFAULT CHARSET=latin1;
/*Data for the table `grupos` */
insert into `grupos`(`id_grupo`,`nome_grupo`,`logo_grupo`,`info_grupo`,`cor_grupo`) values (13,'Belo Horizonte',NULL,NULL,NULL),(14,'Barbacena',NULL,NULL,NULL),(15,'Governador Valadares','1327346084agua_viva_cc.jpg','testedsafsdf','D8F2F0'),(16,'Varginha','1327345628desert.jpg','dsfsadfsdafdsafsdafvcxv','FF4F2B');
/*Table structure for table `usuario_download` */
DROP TABLE IF EXISTS `usuario_download`;
CREATE TABLE `usuario_download` (
`id_usuario` int(4) NOT NULL,
`id_arquivo` int(4) NOT NULL,
`data_download` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
/*Data for the table `usuario_download` */
insert into `usuario_download`(`id_usuario`,`id_arquivo`,`data_download`) values (23,13,'2012-01-23 13:44:08'),(23,10,'2012-01-23 13:46:16'),(24,13,'2012-01-23 15:03:43'),(24,13,'2012-01-23 15:04:05'),(24,13,'2012-01-23 15:04:12'),(24,13,'2012-01-23 15:04:51'),(24,13,'2012-01-23 15:07:49');
/*Table structure for table `usuario_grupo` */
DROP TABLE IF EXISTS `usuario_grupo`;
CREATE TABLE `usuario_grupo` (
`id_grupo` int(11) NOT NULL,
`id_usuario` int(11) NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
/*Data for the table `usuario_grupo` */
insert into `usuario_grupo`(`id_grupo`,`id_usuario`) values (16,19),(13,22),(13,23),(14,24);
/*Table structure for table `usuarios` */
DROP TABLE IF EXISTS `usuarios`;
CREATE TABLE `usuarios` (
`id_usuario` int(4) NOT NULL AUTO_INCREMENT,
`nome_usuario` varchar(40) NOT NULL,
`sobrenome_usuario` varchar(40) NOT NULL,
`login_usuario` varchar(30) NOT NULL,
`senha_usuario` varchar(30) NOT NULL,
`tipo_usuario` int(2) NOT NULL,
PRIMARY KEY (`id_usuario`)
) ENGINE=InnoDB AUTO_INCREMENT=25 DEFAULT CHARSET=latin1;
/*Data for the table `usuarios` */
insert into `usuarios`(`id_usuario`,`nome_usuario`,`sobrenome_usuario`,`login_usuario`,`senha_usuario`,`tipo_usuario`) values (19,'Marcelo','Dênis','marcelo','123',1),(22,'Jefferson','Bastos','jefferson','123',1),(23,'Fernanda','Oliveira','fernanda','123',0),(24,'Adolfo','Crisvaldo','adocris','123',0);
/*!40101 SET SQL_MODE=@OLD_SQL_MODE */;
/*!40014 SET FOREIGN_KEY_CHECKS=@OLD_FOREIGN_KEY_CHECKS */;
/*!40014 SET UNIQUE_CHECKS=@OLD_UNIQUE_CHECKS */;
/*!40111 SET SQL_NOTES=@OLD_SQL_NOTES */;
Question
Marcelouco
Bom dia!
Estou tendo uma certa dificuldade pra criar uma query avançada (pelo menos pra mim). Será que alguém poderia me ajudar?
É o seguinte:
Tenho as tabelas: arquivo, arquivo_grupo, grupos, usuarios, usuarios_download, usuario_grupo.
Tenho uma página que lista um relatório de quais usuários baixou qual arquivo e quando baixou, com a seguinte query:
E funciona perfeitamente. Logo, esta lista será longa com o passar do tempo. Portanto, criei um combobox com todos os grupos onde poderei escolherei por qual grupo quero listar o relatório (filtrar). Aí entra o problema. Como eu poderia fazer esse novo QUERY? Alguém tem a solução? Para quem puder me ajudar e quiser o banco pra testar:Aguardo respostas.
Link to comment
Share on other sites
1 answer to this question
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.