MySQL Forums
Forum List  »  Portuguese

NOOB - Preciso de ajuda com uma select com LIKE, ela me retorna todos os resultados, mas eu quero só o mais parecido
Posted by: Yuri Sa
Date: February 21, 2011 09:36AM

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?

Options: ReplyQuote


Subject
Views
Written By
Posted
NOOB - Preciso de ajuda com uma select com LIKE, ela me retorna todos os resultados, mas eu quero só o mais parecido
4083
February 21, 2011 09:36AM


Sorry, you can't reply to this topic. It has been closed.

Content reproduced on this site is the property of the respective copyright holders. It is not reviewed in advance by Oracle and does not necessarily represent the opinion of Oracle or any other party.