Olá, gostaria de saber se vocês conseguem me ajudar com uma consulta!!!
Desde já muito obrigado
Minha consulta é para comparar e selecionar uma linha com uma clausula "where ... like", o problema é que se ele retorna todas as similares, não só a mais precisa.
SELECT dst, prefixo, valor FROM cdrdiaagrup
INNER JOIN dtlTarifas ON cdrdiaagrup.tarifa = dtlTarifas.linkTarifas
WHERE dst like prefixo
Na tablea "dtlTarifas", eu tenho a coluna prefixo, que contém dados assim:
011951%
0119512%
%
e quando eu rodo a query com o dst = "011951237814" ela retorna todas as linas de "dtlTarifas" repetindo os resultados "cdrdiaagrup" em cada linha
como eu conseguiria fazer o join com uma só linha onde o 'prefixo' fosse mais preciso (ou mais longo), ou com um maior indice de simildaridade, neste caso o 0119512%.
TABELAS
dtlTarifas
CREATE TABLE `asteriskcdrdb`.`cdrdiaagrup` (
`calldate` datetime NOT NULL default '0000-00-00 00:00:00',
`clid` varchar(80) NOT NULL default '',
`src` varchar(80) NOT NULL default '',
`dst` varchar(80) NOT NULL default '',
`dcontext` varchar(80) NOT NULL default '',
`channel` varchar(80) NOT NULL default '',
`dstchannel` varchar(80) NOT NULL default '',
`lastapp` varchar(80) NOT NULL default '',
`lastdata` varchar(80) NOT NULL default '',
`duration` int(11) NOT NULL default '0',
`billsec` int(11) NOT NULL default '0',
`disposition` varchar(45) NOT NULL default '',
`amaflags` int(11) NOT NULL default '0',
`accountcode` varchar(20) NOT NULL default '',
`uniqueid` varchar(32) NOT NULL default '',
`tarifa` varchar(255) NOT NULL default ''
) ENGINE=MyISAM DEFAULT CHARSET=latin1;
insert into cdrdiaagrup (calldate,clid,src,dst,tarifa)
values
('2048-01-20 16:45:48', '"Dr Lucas" <007>', '"Dr Lucas" <007>', '011951237814', '1');
insert into cdrdiaagrup (calldate,clid,src,dst,tarifa)
values
('2048-01-20 16:54:48', '"Dr Lucas" <007>', '"Dr Lucas" <007>', '01147191198', '1');
insert into cdrdiaagrup (calldate,clid,src,dst,tarifa)
values
('2048-01-20 16:12:48', '"Dr Lucas" <007>', '"Dr Lucas" <007>', '01196660661', '1');
Só para vocês saberem a finalidade e quem sabe poder me ajudar com outra consulta, eu preciso me dar o tipo de ligação que é baseado no prefixo, analisando um log de asterisk e comparando ele com a outra tabela que vai conter os prefixos e o tipo de ligação. Alguém tem alguma luz?
Pergunta
Yuri sa
Olá, gostaria de saber se vocês conseguem me ajudar com uma consulta!!!
Desde já muito obrigado
Minha consulta é para comparar e selecionar uma linha com uma clausula "where ... like", o problema é que se ele retorna todas as similares, não só a mais precisa.
Na tablea "dtlTarifas", eu tenho a coluna prefixo, que contém dados assim: 011951% 0119512% % e quando eu rodo a query com o dst = "011951237814" ela retorna todas as linas de "dtlTarifas" repetindo os resultados "cdrdiaagrup" em cada linha como eu conseguiria fazer o join com uma só linha onde o 'prefixo' fosse mais preciso (ou mais longo), ou com um maior indice de simildaridade, neste caso o 0119512%. TABELAS dtlTarifas cdrdiaagrupSó para vocês saberem a finalidade e quem sabe poder me ajudar com outra consulta, eu preciso me dar o tipo de ligação que é baseado no prefixo, analisando um log de asterisk e comparando ele com a outra tabela que vai conter os prefixos e o tipo de ligação. Alguém tem alguma luz?
Link para o comentário
Compartilhar em outros sites
0 respostass a esta questão
Posts Recomendados
Participe da discussão
Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.