iReports + JasperReports

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`) )