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`.`dtlTarifas` (
`idDtlTarifas` int(11) NOT NULL auto_increment,
`prefixo` varchar(50) default NULL,
`cadencia1` varchar(50) default NULL,
`cadencia2` varchar(50) default NULL,
`cadencia3` varchar(50) default NULL,
`tipo` varchar(50) default NULL,
`nome` varchar(50) default NULL,
`obs` varchar(255) default NULL,
`linkTarifas` int(11) default NULL,
`prioridade` varchar(50) default NULL,
PRIMARY KEY (`idDtlTarifas`)
) ENGINE=MyISAM AUTO_INCREMENT=8 DEFAULT CHARSET=latin1;
insert into dtlTarifas (prefixo,tipo,linkTarifas) values (0__9%,'cell',1)
insert into dtlTarifas (prefixo,tipo,linkTarifas) values (%,'tutti',1)
insert into dtlTarifas (prefixo,tipo,linkTarifas) values (011951%,'finanze',1)
insert into dtlTarifas (prefixo,tipo,linkTarifas) values (0119512%,'sl21',1)
insert into dtlTarifas (prefixo,tipo,linkTarifas) values (0119512%,'sl21',1)
cdrdiaagrup
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?