2012-01-16 4 views
0

Я застрял в синтаксической ошибке MySQL, и я действительно не знаю, где ошибка. Я уверен, выполнение довольно большой ЗЕЬЕСТА, состоящий из нескольких различных select_expr подзапросов:MySQL SELECT sytax error внутри оператора IF

SELECT 
`a`.`id` AS `id`, 
`a`.`name` AS `name`, 

/* ... */ 

IF(((SELECT COUNT(*) FROM `position` WHERE (`auftrag_id` = `a`.`id`) AND (`status` < 100)) = 0), (To_days(SELECT `enddatum` FROM `position` WHERE (`auftrag_id` = `a`.`id`) ORDER BY `enddatum` DESC LIMIT 1) - To_days(`a`.`datum`)), NULL) AS `days`, 

/* ... */ 

FROM 
`auftrag` `a` 

select_expr вызывает ошибку является IF-заявление между ними, остальной частью всего заявления работает очень хорошо. Выход ошибки:

#1064 - 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 'SELECT `enddatum` FROM `position` WHERE (`auftrag_id` = `a`.`id`) ORDER B' at line 50 

В чем проблема?

ответ

3

(несвязанный): IF У вас нет инструкции, это функция.


Поместите SELECT подзапрос:

To_days(SELECT `enddatum` 
     FROM `position` 
     WHERE (`auftrag_id` = `a`.`id`) 
     ORDER BY `enddatum` DESC 
     LIMIT 1 
     ) 

между скобкой:

To_days((SELECT `enddatum` 
      FROM `position` 
      WHERE (`auftrag_id` = `a`.`id`) 
      ORDER BY `enddatum` DESC 
      LIMIT 1 
     ) 
     ) 
Смежные вопросы