Pessoal,
Eu estou utilizando o iReports para gerar os relatorios e tenho algumas duvidas, eu li alguns materiais porem não entendi:
Gostaria primeiro de saber como faço para o relatório ser gerado e aberto na aplicação WEB e quais *.jar usar.
E tambem saber se tem como quando um valor da consulta aparecer repetido ele mostrar apenas um.
Estou utilizando a consulta direto no banco, se tiver como fazer passando objetos melhor.
Mais uma duvida caso alguem saiba, sei que não tem nd a ver com o forum, mais se tiver como me ajudarem agradeço:
Eu faço a seguinte consulta:
select a.nome as Area, t.nome as Tamanho, count(a.nome) as Qtde
from usuarios u left outer join baia b on b.numero = u.baia left join area a on a.id = u.area, tamanho_baia t
where b.tamanho = t.id
group by a.nome, t.nome
order by a.nome, t.nome
porem precisava que quando dois usuarios ocupassem a mesma baia ele contasse uma vez só.
Obrigado pela ajuda
Respondendo sobre seu SQL. Bem, primeiramente formate a query, seus apelidos são ilegíveis, caso trabalhe em um projeto onde um query simples relaciona-se com mais de 10 tabelas imagine como seria a query como você apelidou a sua usando apenas as primeiras letras da tabela. Lembre-se, mesmo em querys simple a legibilidade do código deve ser mantida.
Exemplo de como deveria ser sua query
SELECT NOME AS AREA
,TAMANHO_BAIA.NOME AS TAMANHO
,COUNT(NOME) AS QUANTIDADE
FROM USUARIOS
LEFT OUTER JOIN BAIA ON ( BAIA.NUMERO = USUARIO.BAIA )
LEFT OUTER JOIN AREA ON ( AREA.ID = USUARIO.AREA )
JOIN BAIA.TAMANHO = TAMANHO_BAIA.ID
GROUP BY AREA.NOME, TAMANHO_BAIA.NOME
ORDER BY AREA.NOME, TAMANHO_BAIA.NOME
Sua query agora é muito mais legível. Bem, quanto ao agrupamento de usuários por baia poderia postar como é a estrutura de suas tabelas, pois que pude ver na sua query está muito mau formalizado.
O SGBD é o MySQL
Usuarios
CREATE TABLE `mzsuporte`.`usuarios` (
`id` int(5) NOT NULL AUTO_INCREMENT,
`nome` varchar(40) NOT NULL,
`area` int(2) NOT NULL,
`ramal` int(4) DEFAULT NULL,
`baia` int(4) DEFAULT NULL,
PRIMARY KEY (`id`),
KEY `area` (`area`),
KEY `ramal` (`ramal`),
KEY `baia` (`baia`),
CONSTRAINT `usuarios_ibfk_1` FOREIGN KEY (`area`) REFERENCES `area` (`id`),
CONSTRAINT `usuarios_ibfk_2` FOREIGN KEY (`ramal`) REFERENCES `ramais` (`numero`),
CONSTRAINT `usuarios_ibfk_3` FOREIGN KEY (`baia`) REFERENCES `baia` (`numero`)
)
Area
CREATE TABLE `mzsuporte`.`area` (
`id` int(2) NOT NULL AUTO_INCREMENT,
`nome` varchar(20) NOT NULL,
`area` int(2) DEFAULT NULL,
PRIMARY KEY (`id`),
KEY `FK1_AREA` (`area`),
CONSTRAINT `FK1_AREA` FOREIGN KEY (`area`) REFERENCES `area` (`id`)
)
Baia
CREATE TABLE `mzsuporte`.`baia` (
`numero` int(4) NOT NULL,
`tamanho` int(2) DEFAULT NULL,
`pto_rede` char(3) NOT NULL,
`pto_tel` char(3) NOT NULL,
`pc` int(5) DEFAULT NULL,
`monitor` int(4) DEFAULT NULL,
PRIMARY KEY (`numero`),
KEY `tamanho` (`tamanho`),
KEY `pc` (`pc`),
KEY `monitor` (`monitor`),
CONSTRAINT `baia_ibfk_1` FOREIGN KEY (`tamanho`) REFERENCES `tamanho_baia` (`id`),
CONSTRAINT `baia_ibfk_2` FOREIGN KEY (`pc`) REFERENCES `desktop` (`id`),
CONSTRAINT `baia_ibfk_3` FOREIGN KEY (`monitor`) REFERENCES `monitor` (`id`)
)
Tamanho_Baia
CREATE TABLE `mzsuporte`.`tamanho_baia` (
`id` int(2) NOT NULL AUTO_INCREMENT,
`nome` varchar(10) NOT NULL,
PRIMARY KEY (`id`)
)