1
여기에 무슨 문제가 있는지 알 수 없습니다. 3 테이블의 다중 조인을 사용하여 쿼리를 실행 중입니다. 아래 쿼리는 완벽하게 작동합니다. 직원 세부 정보, 나이, 인증서가 필요하며 나에게 인증서 만료 날짜와 관련된 정보를 제공하면 나에게도 " - "다음 필드에 인증서가 필요하지 않은 경우 - 내가 말했듯이,이 3 테이블에 대한 내부 조인 쿼리
SELECT
`employee`.*,
date_format(now(), '%Y') - date_format(`empl_dob`, '%Y') -
(date_format(now(), '00-%m-%d') < date_format(`empl_dob`, '00-%m-%d')) AS age,
`certs`.`cert_medical_restrict`,
IF(`jobtitle`.`jt_medical`='n/a', `jobtitle`.`jt_medical`,
IF(`certs`.`cert_medical` = 0, 'No Cert',
IF((DATEDIFF((DATE_ADD(`certs`.`cert_medical`, INTERVAL 365 DAY)),CURDATE())) < 1, 'X',
IF((DATEDIFF((DATE_ADD(`certs`.`cert_medical`, INTERVAL 365 DAY)),CURDATE())) < 30, 'ES', 'ok')))
) AS medical,
IF(`jobtitle`.`jt_medical`='n/a', '-',
IF(`certs`.`cert_medical` = 0, '-', (DATEDIFF((DATE_ADD(`certs`.`cert_medical`, INTERVAL 365 DAY)),CURDATE())))) AS medicalx
FROM `employee`
JOIN `jobtitle`
ON `employee`.`jobtitle_id` = `jobtitle`.`jobtitle_id`
JOIN `certs`
ON `certs`.`empl_idno` = `employee`.`empl_idno`
WHERE `employee`.`empl_no` = '10517602'
는 ...하지만 내 다음 질의, 나는 실제 유효 기간을 표시해야 ... 마법처럼 작동합니다 collatio의 인증서, 쿼리가
SELECT
`employee`.*,
date_format(now(), '%Y') - date_format(`empl_dob`, '%Y') -
(date_format(now(), '00-%m-%d') < date_format(`empl_dob`, '00-%m-%d')) AS age,
`certs`.`cert_medical_restrict`,
IF(`jobtitle`.`jt_medical`='n/a', `jobtitle`.`jt_medical`,
IF(`certs`.`cert_medical` = 0, 'No Cert', (DATE_ADD(`certs`.`cert_medical`, INTERVAL 365 DAY)))) AS medical,
IF(`jobtitle`.`jt_medical`='n/a', '-',
IF(`certs`.`cert_medical` = 0, '-', (DATEDIFF((DATE_ADD(`certs`.`cert_medical`, INTERVAL 365 DAY)),CURDATE())))) AS medicalx
FROM `employee`
JOIN `jobtitle`
ON `employee`.`jobtitle_id` = `jobtitle`.`jobtitle_id`
JOIN `certs`
ON `certs`.`empl_idno` = `employee`.`empl_idno`
WHERE `employee`.`empl_no` = '10517602'
지금 나는이 오류가 ... 매우 거의 같은,하지만하지 않고 문 IF 여분 보면 "잘못된 혼합 나는 그 주위에 머리를 얻을 수 없다. 세 개의 테이블이 서로 다르지만 모두 "latin_swedish_ci"로 설정되어 있는지 확인했다.
(nt (latin1_swedish_ci, IMPLICIT))
여기서 내가 뭘 잘못하고 있니? 어떤 도움을 주시면 감사하겠습니다 - 고맙습니다.
'테이블 구조 '를주십시오. –
'IMPLICIT'은 일부 데이터베이스 필드가 아닌 inSQL 문자열에 관한 것입니다. 모든 곳에서'utf8'을 사용하면이 모든 문제를 해결할 수 있습니다 .. –
[이] (http://airbladesoftware.com/notes/fixing-mysql-illegal-mix-of-collations/) 기사도 읽으십시오. –