Consulta MySQL devolviendo valores desconocidos

En primer lugar, esto es un poco complicado de explicar.

Tengo problemas con solo un CONCAT. La siguiente consulta devuelve valores 'Locale' que no existen en la tabla.

SELECT client.description, client.name, loc.description
FROM clients AS client
LEFT JOIN FromWhere AS from ON from.id = client.id_from
LEFT JOIN locale AS loc ON loc.id = from.id_loc
client.description LIKE CONCAT('%', ?, '%') 
AND IFNULL(client.name, '') LIKE CONCAT('%', ?, '%') 
AND IFNULL(loc.description, '') LIKE CONCAT('%', ?, '%')
GROUP BY client.id
ORDER BY client.id DESC

Mi tabla reproduce lo siguiente (CORRECTO):

-description-------name----------locale
-------------------------------------------
 Dude...         Testing         Paris
 No stop         Another         null
 Representing    null            null
 stackover       OneMore         London

Con el código MySQL anterior, si cambio a lo que quiero obtuve estos extraños resultados:

SELECT client.description, client.name, loc.description
FROM clients AS client
LEFT JOIN FromWhere AS from ON from.id = client.id_from
LEFT JOIN locale AS loc ON loc.id = from.id_loc
client.description LIKE CONCAT('%', 'stackover', '%') 
AND IFNULL(client.name, '') LIKE CONCAT('%', 'OneMore', '%') 
AND IFNULL(loc.description, '') LIKE CONCAT('%', 'OK', '%')
GROUP BY client.id
ORDER BY client.id DESC



   -description-------name----------locale
   -------------------------------------------
     stackover       OneMore         OK

As you see, "Locale" -> OK doesn't exist.. This happens to a few values..and I can't figure out the connection between them.

¿Algunas ideas?

0
Tengo el segundo operador ... pasando aquí y adaptándome para que ustedes puedan entender que, de alguna manera, lo olvidé.
agregado el autor user3065191, fuente
Debería poner backticks alrededor del alias de ya que es una palabra clave. También le falta un operador booleano (o posible un DONDE) entre ON loc.id = from.id_loc y client.description LIKE CONCAT ('%', 'stackover', '%' )
agregado el autor AgRizzo, fuente

1 Respuestas

No estoy seguro de dónde está el problema

He recreado tus tablas en el siguiente SQL Fiddle, y las cosas parecen funcionar bien.

Comente/elimine el comentario del filtro en la descripción de la ubicación y verifique.

http://sqlfiddle.com/#!2/8f6a4c/8

¿Puedes actualizar el violín con el escenario específico, en caso de que no sea satisfactorio?

0
agregado
El problema de mostrarte es que tengo toneladas de registros (porque se une a una tabla que tiene los códigos postales ...) Aunque creo que he logrado hacer el mismo error en SQLFiddle. sqlfiddle.com/#!2/8d18b/9 He intentado adaptar, para que pueda entender +/- las tablas que tengo y los campos.
agregado el autor user3065191, fuente
Por cierto, si elimino el "GROUP BY" de mi código original, obtengo miles de registros duplicados que no existen con el mismo ID.
agregado el autor user3065191, fuente
Sí. Llegué a la misma conclusión que tú ... aunque necesito algo así. El archivo .CSV que recibo con todos los pueblos y ciudades tiene el valor de Ciudades que pertenece a Ciudades. Entonces la mesa es algo así como: Town 1, Town 2, Town 3 pertenece a City A :: Town 1, Town 2, Town 3 pertenece a City B. etc. ¿Hay algo que pueda hacer?
agregado el autor user3065191, fuente
Probablemente debería crear otra tabla ...
agregado el autor user3065191, fuente
Gracias, resuelto con tu ayuda. Creé otra tabla llamada town_rel para establecer las relaciones entre las tablas y funciona bien ahora.
agregado el autor user3065191, fuente
Está utilizando GROUP BY incorrectamente. La razón por la que tienes registros duplicados es porque tienes el mismo id_town usado para diferentes ciudades. Consulte sqlfiddle.com/#!2/fbc94d/1 .
agregado el autor Geordee Naliyath, fuente