Jump to content


Marcelo Dênis

Member Since 08/04/2008
Offline Last Active 24/01/2012, 15:43
-----

Topics I've Started

Dificuldade Em Select Mysql

24/01/2012, 09:51

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:

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','modderna',1),(23,'Fernanda','Oliveira','fernanda','modderna',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 */;


Aguardo respostas.

IPB Skin By Virteq