Прежде всего, это немного сложно объяснить.Запрос MySQL, возвращающий неизвестные значения
У меня проблемы с одним CONCAT. Следующий запрос возвращает значения «Locale», которых нет в таблице.
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
Моя таблица воспроизводит следующее (ВЕРНО):
-description-------name----------locale
-------------------------------------------
Dude... Testing Paris
No stop Another null
Representing null null
stackover OneMore London
С кодом MySQL выше, если бы я изменить то, что я хочу, я получил эти странные результаты:
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 вы видите, что «Locale» -> OK не существует. Это происходит с несколькими значениями ... и я не могу понять связь между ними.
Любые идеи?
Вы должны поместить обратные ссылки вокруг псевдонима 'from', поскольку это ключевое слово. Вам также не хватает логического оператора (или возможно ГДЕ) между 'ON loc.id = from.id_loc' и' client.description LIKE CONCAT ('%', 'stackover', '%') ' – AgRizzo
У меня есть второй оператор. Переходим сюда и адаптируем, чтобы вы, ребята, могли понять, я как-то забыл об этом. – user3065191