Utilizar "Contiene" en consulta de coincidentes
Publicado por javier (2 intervenciones) el 21/04/2011 12:57:58
A partir de dos tablas CLIENTES (Apellido1, Apellido2, Nombre) y RESERVAS (A1, A2, Nomb), he creado una consulta para buscar los registros de RESERVAS que estén en CLIENTES, haciendo (arrastrando el campo) que Apellido1sea igual que A1 y que Apellido2 sea igual a A2. Una vez hecha la consulta en modo Diseño, al verla en SQL queda de la siguiente forma:
SELECT Clientes.apellido1, Clientes.apellido2, Clientes.nombre, Reservas.A1, Reservas.A2, Reservas.Nomb
FROM Clientes INNER JOIN Reservas ON (Clientes.apellido1 = Reservas.A1) AND (Clientes.apellido2 = Reservas.A2);
Hasta aquí todo bien. El problema es que como la tabla RESERVAS me viene dada desde fuera (la rellenan de otras tiendas), la grabación de datos no es homogénea y eso me está dando problemas. Por ejemplo: en la tabla Reservas me puede venir como "Castillo" "Jimenez" "Juan (del)" y esa misma persona en mi tabla Clientes viene como "Del Castillo" "Jimenez" "Juan". Por lo tanto la consulta de registros coincidentes no me lo selecciona (me tengo que ceñir a los dos apellidos ya que en el resto de campos la grabación es algo más dispar).
Mi consulta es si es posible que en la instrucción SQL que os indico se pueda sustituir el = por algún otro criterio que implique "contiene". De esa manera, en el ejemplo anterior, me seleccionaría ambos registros ya que "Castillo" (como A1 de la tabla Reservas) está contenido en "Del Castillo" (como Apellido1 de la tabla Clientes); luego al generar un informe , en base al resto de campos del registro (Nombre, documento, teléfono, etc) descartaría o no que se tratan de la misma persona.
He intentado jugar con el * en los campos Apellido1 y Apellido2 de la instrucción SQL pero me da errores (no sé si estoy cometiendo algún error de sintaxis o que lo que pretendo no es posible)
Me podéis indicar alguna sugerencia. GRACIAS
SELECT Clientes.apellido1, Clientes.apellido2, Clientes.nombre, Reservas.A1, Reservas.A2, Reservas.Nomb
FROM Clientes INNER JOIN Reservas ON (Clientes.apellido1 = Reservas.A1) AND (Clientes.apellido2 = Reservas.A2);
Hasta aquí todo bien. El problema es que como la tabla RESERVAS me viene dada desde fuera (la rellenan de otras tiendas), la grabación de datos no es homogénea y eso me está dando problemas. Por ejemplo: en la tabla Reservas me puede venir como "Castillo" "Jimenez" "Juan (del)" y esa misma persona en mi tabla Clientes viene como "Del Castillo" "Jimenez" "Juan". Por lo tanto la consulta de registros coincidentes no me lo selecciona (me tengo que ceñir a los dos apellidos ya que en el resto de campos la grabación es algo más dispar).
Mi consulta es si es posible que en la instrucción SQL que os indico se pueda sustituir el = por algún otro criterio que implique "contiene". De esa manera, en el ejemplo anterior, me seleccionaría ambos registros ya que "Castillo" (como A1 de la tabla Reservas) está contenido en "Del Castillo" (como Apellido1 de la tabla Clientes); luego al generar un informe , en base al resto de campos del registro (Nombre, documento, teléfono, etc) descartaría o no que se tratan de la misma persona.
He intentado jugar con el * en los campos Apellido1 y Apellido2 de la instrucción SQL pero me da errores (no sé si estoy cometiendo algún error de sintaxis o que lo que pretendo no es posible)
Me podéis indicar alguna sugerencia. GRACIAS
Valora esta pregunta
0