Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

My name is Jan Lucas

[Resolvido] Problemas com Agrupamentos

Recommended Posts

Tenho um sistema de helpdesk, onde preciso contabilizar a quantidade de chamados que ocorrem,

tenho uma tabela que armazena todos os chamados chamada de "helps".

Tenho outra tabela com o nome "user_admin" onde ficam os registros dos usuários, e nessa tabela tenho um campo chamado "setor" que é uma string (Eu errei nisso, mas o sistema ja ta com registros e no ar, e nao tem como resolver, deveria ser um campo inteiro pra armazenar o id de outra tabela só com setores).

 

A tabela helps tá relacionada com user_admin e assim pretendo pegar a quantidade de chamados por cada setor.

Alguem pode tentar me ajudar?

 

Faz tempo que tento resolver, mas não consigo.

 

Olha como tá aparecendo.

 

Setor Chamados

 

INFORMATICA 0

INFORMÁTICA 2

PLANEJAMENTO 2

SUPERINTENDÊNCIA 3

PLANEJAMENTO 2

SUPERINTENDÊNCIA 1

 

e o código é esse:

mysql_query("SELECT user_admin.setor, ( SELECT COUNT(`id_helps`) 
FROM helps WHERE helps.id_user_fk = user_admin.id) AS qnt_helps FROM user_admin");

 

mas colocando o GROUP BY fica assim :

 

Setor Chamados

INFORMATICA 0

INFORMÁTICA 2

PLANEJAMENTO 2

SUPERINTENDÊNCIA 3

 

e o código é esse:

 

$x = mysql_query("SELECT user_admin.setor, ( SELECT COUNT(`id_helps`) 
FROM helps WHERE helps.id_user_fk = user_admin.id) AS qnt_helps FROM user_admin GROUP BY user_admin.setor");

 

Detectaram o problema néah? Ele agrupa mas nao contabiliza corretamente.

 

Abraçao galera.

Compartilhar este post


Link para o post
Compartilhar em outros sites

faz um ORDER BY user_admin.setor

 

mas antes roda um UPDATE para corrigir os acentos de INFORMATICA para INFORMÁTICA.

 

se tiver duvidas, exporte as tabelas com registros e poste aqui.

Compartilhar este post


Link para o post
Compartilhar em outros sites

TABELA user_admin --> ONDE FICAM O REGISTRO DOS USUÁRIOS

 

/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;

/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;

/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;

/*!40101 SET NAMES utf8 */;

 

--

-- Banco de Dados: `helpdesk`

--

 

-- --------------------------------------------------------

 

--

-- Estrutura da tabela `user_admin`

--

 

CREATE TABLE IF NOT EXISTS `user_admin` (

`id` int(11) NOT NULL AUTO_INCREMENT,

`user_name` varchar(30) NOT NULL,

`complete_name` varchar(50) NOT NULL,

`setor` varchar(120) NOT NULL,

`email` varchar(100) NOT NULL,

`pass` varchar(15) NOT NULL,

`nivel` varchar(5) NOT NULL,

`user_status` int(11) NOT NULL,

PRIMARY KEY (`id`)

) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=9 ;

 

--

-- Extraindo dados da tabela `user_admin`

--

 

INSERT INTO `user_admin` (`id`, `user_name`, `complete_name`, `setor`, `email`, `pass`, `nivel`, `user_status`) VALUES

(2, 'admin', 'admin', 'INFORMÁTICA', 'diego.ribeiro@yahoo.com.br', '123456789', 'adm', 1),

(4, 'maria', 'adsada', 'PLANEJAMENTO', 'maria@yahoo.com.br', '123456', 'user', 1),

(5, 'maria2', '123', 'SUPERINTENDÊNCIA', 'maria2@yahoo.com.brr', '123456', 'user', 1),

(6, 'Joana', 'asdfasdfadsf', 'PLANEJAMENTO', 'joana@yahoo.com.br', '123456', 'user', 1),

(7, 'aldenor', 'adasda', 'SUPERINTENDÊNCIA', 'aldenor@yahoo.com.br', '123456', 'user', 1),

(8, 'adm', 'adm adm adm', 'INFORMÃTICA', 'admin.adm@yahoo.com.br', '123456', 'adm', 1);

 

/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;

/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;

/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;

 

 

TABELA helps --> ONDE FICAM TODOS OS CHAMADOS

 

 

/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;

/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;

/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;

/*!40101 SET NAMES utf8 */;

 

--

-- Banco de Dados: `helpdesk`

--

 

-- --------------------------------------------------------

 

--

-- Estrutura da tabela `helps`

--

 

CREATE TABLE IF NOT EXISTS `helps` (

`id_helps` int(11) NOT NULL AUTO_INCREMENT,

`id_user_fk` int(11) NOT NULL,

`assunto` varchar(60) NOT NULL,

`mensagem` mediumtext NOT NULL,

`hora` time NOT NULL,

`data` date NOT NULL,

PRIMARY KEY (`id_helps`)

) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=11 ;

 

--

-- Extraindo dados da tabela `helps`

--

 

INSERT INTO `helps` (`id_helps`, `id_user_fk`, `assunto`, `mensagem`, `hora`, `data`) VALUES

(1, 3, 'xxx', 'aa', '12:11:10', '2010-11-23'),

(2, 3, 'Tow com muito sono.', 'aaaaaaaaaaaaaaaaaaasssssssssssssssssssss', '09:11:17', '2010-11-25'),

(3, 5, 'Estou com dor de dente', 'aaaaaaaaaaaaaaaaaaaaaaaaaaaaa', '10:12:11', '2010-12-01'),

(4, 5, 'Socorro', 'minha maquina ta pegando fogo!', '10:12:26', '2010-12-01'),

(5, 4, 'chegou', 'asdasdasdasdas', '10:12:38', '2010-12-01'),

(6, 4, 'Feijão', 'socorro ta podre o feijão', '10:12:04', '2010-12-01'),

(7, 6, 'AAAAI, dor de cabeça', 'aaaas', '11:12:27', '2010-12-01'),

(8, 6, 'mercúriooooo', 'kkkk', '11:12:33', '2010-12-01'),

(9, 5, 'Por que nao ta funcionando?', 'aaaaaaaaaaaffffffffff', '12:12:25', '2010-12-01'),

(10, 7, 'VENHA AQUI AGORA!', 'kkkkkkkkkkk', '12:12:44', '2010-12-01');

 

/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */;

/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */;

/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */;

 

Eu fiz mas não funcionou. Dá para observar que alguns caracteres não são interpretados e essas pessoas são cadastradas no sistema. Já o "admin" (primeiro administrador do sistema) está com nome normal porque ele foi cadastrado diretamente no banco. E o "adm" (segundo administrador) foi cadastrado no sistema pelo primeiro. "Deve ser a diferença dos lugares onde são cadastrados que causam a diferença dos caracteres".

Enfim nao sei pq essa diferença de caracteres.

 

Os registros foram agrupados, maas nao contabilizaram realmente a quantidade de chamados

Compartilhar este post


Link para o post
Compartilhar em outros sites

Corrija teus problemas com collation primeiro

 

utf8

 

tá usando utf8 em tudo?

no php, no html ?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Corrija teus problemas com collation primeiro

 

utf8

 

tá usando utf8 em tudo?

no php, no html ?

 

Eu uso o notepad ++ pra programar.

E ele tem opção UTF-8 (SEM BOM) eu deixo essa marcada.

 

E no HTML tenho a tag no head assim:

<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

 

E no php na pagina de cadastro tem :

ini_set('default_charset','UTF-8');

 

certo?

 

 

Corrija teus problemas com collation primeiro

 

utf8

 

tá usando utf8 em tudo?

no php, no html ?

 

Eu uso o notepad ++ pra programar.

E ele tem opção UTF-8 (SEM BOM) eu deixo essa marcada.

 

E no HTML tenho a tag no head assim:

<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

 

E no php na pagina de cadastro tem :

ini_set('default_charset','UTF-8');

 

certo?

 

WIlliaam, não deixa de me ajudar não fio please.

Tow precisando muito, falta isso pra terminar meu sistema.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Passando só pra informar que deu certo.

 

Olha a query :

 

SELECT u.setor, COUNT(h.id_helps) as `qtd`
FROM user_admin AS u INNER JOIN helps AS h
ON u.id = h.id_user_fk GROUP BY u.setor

 

amigo aki analista conseguiu. http://forum.imasters.com.br/public/style_emoticons/default/clap.gif

 

agora ele mostra :

 

Total de chamados: 9

Setor Chamados

DEPARTAMENTO DE INSTALAÇÃO DE POÇOS 1

PLANEJAMENTO 4

SUPERINTENDÊNCIA 4

 

Abração William, Brigado pelas ajudas aew

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.