Ver Mensaje Individual
  #6 (permalink)  
Antiguo 15/02/2009, 02:59
jurena
Colaborador
 
Fecha de Ingreso: marzo-2008
Ubicación: Cáceres
Mensajes: 3.735
Antigüedad: 16 años, 1 mes
Puntos: 300
Respuesta: Consulta de concordancia

Edito:
he borrado la anterior propuesta, para hacerte esta otra:
Código sql:
Ver original
  1. SELECT ta.prefijo, ta.destino, ta.tarifa, LENGTH( ta.prefijo ) digpref
  2. FROM `tarifas` ta
  3. INNER JOIN telefono te ON LEFT( te.telefono, LENGTH( ta.prefijo ) )
  4. ORDER BY digpref DESC
  5. LIMIT 1
con ella encontrará sólo movileespaña cuando empiece por 346, aunque el número de dígitos coincida. En caso de coincidencia desde el comienzo, te mostrará sólo el número que tenga mayor número de coincidencias desde el principio.
Si se trata de una búsqueda y no del cruce de dos tablas, yo usaría algo así, dependiendo del número mayor de dígitos en un prefijo. Imaginemos que son 4
Código sql:
Ver original
  1. SELECT *
  2. FROM `tarifas`
  3. WHERE LEFT( '34636126220', 1 ) = prefijo
  4. OR LEFT( '34636126220', 2 ) = prefijo
  5. OR LEFT( '34636126220', 3 ) = prefijo
  6. OR LEFT( '34636126220', 4) = prefijo
  7. ORDER BY LENGTH( prefijo ) DESC LIMIT 1

Si el número de digitos de los distintos teléfonos (prefijo+resto de número) son distintos todos según el prefijo, resultará mucho más fácil y rápido, pero debes comprobar las distintas posibilidades.

Para esto también podrías usar programación, pero estamos en un foro de base de datos.

Última edición por jurena; 15/02/2009 a las 05:29