테이블에 저장된 여러 개의 작은 쿼리를 기반으로 자동 생성 된 SQL 쿼리에 문제가 있으며 사용자가 입력 한 것과 결합되었습니다.자동으로 생성 된 SQL 쿼리에 문제가 발생했습니다.
작동하는 쿼리 및 쿼리 자체에 대한 입력을 표시합니다.
입력 한 내용과 실패한 쿼리가 표시됩니다.
누군가 내 입력을 통해 내 쿼리가 실패하는 원인을 지적 할 수 있다면 가장 감사하게 생각합니다.
fromclause :
((`clients` INNER JOIN `addresstorecord`
ON `clients`.`uuid` = `addresstorecord`.`recordid`
AND `addresstorecord`.`tabledefid`='tbld:6d290174-8b73-e199-fe6c-bcf3d4b61083'
AND addresstorecord.primary='1')
INNER JOIN `addresses` ON `addresstorecord`.`addressid` = `addresses`.`uuid`)
displayfield :
IF(clients.company != '',
CONCAT(clients.company,
IF(clients.lastname != '' OR clients.firstname != '',
CONCAT(' (',
IF(clients.lastname != '', clients.lastname, '{blank}'),
', ',
IF(clients.firstname != '', clients.firstname, '{blank}'),
')'),
'')
),
IF(clients.lastname != '' OR clients.firstname != '',
CONCAT(IF(clients.lastname != '', clients.lastname, '{blank}'),
', ',
IF(clients.firstname != '', clients.firstname, '{blank}')),
''))
)
secondaryfield :
IF(addresses.city != '' OR addresses.state !='' OR addresses.postalcode != '',
CONCAT(IF(addresses.city != '', addresses.city, ''),
', ',
IF(addresses.state != '', addresses.state, ''),
' ',
IF(addresses.postalcode != '', addresses.postalcode, '')),
'unspecified location')
classfield :
clients.type
searchfields :
clients.company, clients.firstname, clients.lastname
filterclause : 작동
clients.inactive=0
쿼리 :
SELECT
COUNT(IF(clients.company != '', CONCAT(clients.company,IF(clients.lastname != '' OR clients.firstname != '', CONCAT(' (',if(clients.lastname != '', clients.lastname, '{blank}'),', ',if(clients.firstname != '', clients.firstname, '{blank}'),')'), '')), IF(clients.lastname != '' OR clients.firstname != '', CONCAT(if(clients.lastname != '', clients.lastname, '{blank}'),', ',if(clients.firstname != '', clients.firstname, '{blank}')), ''))) AS thecount
FROM
((`clients` INNER JOIN `addresstorecord` ON `clients`.`uuid` = `addresstorecord`.`recordid` AND `addresstorecord`.`tabledefid`='tbld:6d290174-8b73-e199-fe6c-bcf3d4b61083' AND addresstorecord.primary='1') INNER JOIN `addresses` ON `addresstorecord`.`addressid` = `addresses`.`uuid`)
WHERE
(clients.inactive=0)
AND ((clients.company LIKE 'g%'
OR clients.firstname LIKE 'g%'
OR clients.lastname LIKE 'g%'
) OR ((clients.company LIKE 'g%' OR clients.company LIKE '% g%'
OR clients.firstname LIKE 'g%' OR clients.firstname LIKE '% g%'
OR clients.lastname LIKE 'g%' OR clients.lastname LIKE '% g%'
)))
SELECT DISTINCT
IF(clients.company != '', CONCAT(clients.company,IF(clients.lastname != '' OR clients.firstname != '', CONCAT(' (',if(clients.lastname != '', clients.lastname, '{blank}'),', ',if(clients.firstname != '', clients.firstname, '{blank}'),')'), '')), IF(clients.lastname != '' OR clients.firstname != '', CONCAT(if(clients.lastname != '', clients.lastname, '{blank}'),', ',if(clients.firstname != '', clients.firstname, '{blank}')), '')) AS display,
`clients`.`uuid` AS value,
IF(addresses.city != '' OR addresses.state !='' OR addresses.postalcode != '', CONCAT(IF(addresses.city != '',addresses.city,''),', ',IF(addresses.state != '', addresses.state, ''),' ',IF(addresses.postalcode != '', addresses.postalcode, '')),'unspecified location') AS secondary,
clients.type AS classname
FROM
((`clients` INNER JOIN `addresstorecord` ON `clients`.`uuid` = `addresstorecord`.`recordid` AND `addresstorecord`.`tabledefid`='tbld:6d290174-8b73-e199-fe6c-bcf3d4b61083' AND addresstorecord.primary='1') INNER JOIN `addresses` ON `addresstorecord`.`addressid` = `addresses`.`uuid`)
WHERE
(clients.inactive=0)
AND ((clients.company LIKE 'g%'
OR clients.firstname LIKE 'g%'
OR clients.lastname LIKE 'g%'
) OR ((clients.company LIKE 'g%' OR clients.company LIKE '% g%'
OR clients.firstname LIKE 'g%' OR clients.firstname LIKE '% g%'
OR clients.lastname LIKE 'g%' OR clients.lastname LIKE '% g%'
)))
ORDER BY
IF(clients.company != '', CONCAT(clients.company,IF(clients.lastname != '' OR clients.firstname != '', CONCAT(' (',if(clients.lastname != '', clients.lastname, '{blank}'),', ',if(clients.firstname != '', clients.firstname, '{blank}'),')'), '')), IF(clients.lastname != '' OR clients.firstname != '', CONCAT(if(clients.lastname != '', clients.lastname, '{blank}'),', ',if(clients.firstname != '', clients.firstname, '{blank}')), ''))
LIMIT 0, 8
내 입력
fromclause.
guests
displayfield :
IF(guests.passport != '', CONCAT(guests.passport ,IF(guests.lastname != '' OR guests.passport!= '', CONCAT(' (',if(guests.lastname != '', guests.lastname, '{blank}'),', ',if(guests.firstname != '', guests.passport, '{blank}'),')'), '')), IF(guests.lastname != '' OR guests.passport!= '', CONCAT(if(guests.lastname != '', guests.lastname, '{blank}'),', ',if(guests.passport!= '', guests.passport, '{blank}')), ''))
secondaryfield :
classfield :
guests.id
searchfields :
guests.firstname, guests.lastname, guests.passport
,617,
filterclause :
guests.id=0
내 쿼리 실패
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'AS secondary,
guests.id AS classname
FROM
guests
WHERE
(guests' at line 4
Statement:
SELECT DISTINCT
IF(guests.passport != '', CONCAT(guests.passport ,IF(guests.lastname != '' OR guests.passport!= '', CONCAT(' (',if(guests.lastname != '', guests.lastname, '{blank}'),', ',if(guests.firstname != '', guests.passport, '{blank}'),')'), '')), IF(guests.lastname != '' OR guests.passport!= '', CONCAT(if(guests.lastname != '', guests.lastname, '{blank}'),', ',if(guests.passport!= '', guests.passport, '{blank}')), '')) AS display,
`guests`.`uuid` AS value,
AS secondary,
guests.id AS classname
FROM
guests
WHERE
(guests.id=0)
AND ((guests.firstname LIKE 'b%'
OR guests.lastname LIKE 'b%'
OR guests.passport LIKE 'b%'
) OR ((guests.firstname LIKE 'b%' OR guests.firstname LIKE '% b%'
OR guests.lastname LIKE 'b%' OR guests.lastname LIKE '% b%'
OR guests.passport LIKE 'b%' OR guests.passport LIKE '% b%'
)))
ORDER BY
IF(guests.passport != '', CONCAT(guests.passport ,IF(guests.lastname != '' OR guests.passport!= '', CONCAT(' (',if(guests.lastname != '', guests.lastname, '{blank}'),', ',if(guests.firstname != '', guests.passport, '{blank}'),')'), '')), IF(guests.lastname != '' OR guests.passport!= '', CONCAT(if(guests.lastname != '', guests.lastname, '{blank}'),', ',if(guests.passport!= '', guests.passport, '{blank}')), ''))
LIMIT 0, 8
귀하의 질문을 읽고 어려워하고 있습니다 ... – Webnet
가능한 [자동으로 형성된 SQL 쿼리의 구문 오류] (http://stackoverflow.com/questions/3152469/syntax- 오류 자동 작성 SQL 쿼리). 이 점은 읽는 것이 더 어려워지는 것과는 다른 점이 무엇입니까? – gbn
그것은 내 입력을 보여주고 생성 된 쿼리와 제공된 입력을 비교하여 작동하는 쿼리를 생성합니다. 이 질문에서 작업 세트를 비교하여 오류를 판별 할 수 있습니다. – Jacob