우선이 내용은 약간 설명하기가 복잡합니다.알 수없는 값을 반환하는 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
내 테이블은 다음 (CORRECT)를 재생하기 : 코드 MySQL과
-description-------name----------locale
-------------------------------------------
Dude... Testing Paris
No stop Another null
Representing null null
stackover OneMore London
위, 내가로 변경하면 내가이 이상한 결과를 가지고 원하는 :
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
로를 당신은 "로케일"-> 확인이 존재하지 않는 것을 볼 수 있습니다. 이것은 몇 가지 값이 있습니다. 그리고 나는 그들 사이의 연결을 이해할 수 없습니다.
아이디어가 있으십니까?
키워드이기 때문에 앨리어스'from' 주위에 백틱을 넣어야합니다. 'ON loc.id = from.id_loc'과'client.description LIKE CONCAT ('%', 'stackover', '%') 사이에 부울 연산자 (또는 가능한 경우)가 누락되었습니다. – AgRizzo
두 번째 연산자는 .. 여기를 지나서 적응할 수 있도록 사람들이 이해할 수 있도록 어떻게 든 잊어 버렸습니다. – user3065191