MySQL ERROR 1349 Что мне не хватает?

Я получаю ошибку MySQL 1349 , но кажется, что ошибка неверна:

 ERROR 1349: View's SELECT contains a subquery in the FROM clause 

Могу ли я не иметь ЛЮБЫЕ подзапросы при создании представления?

Вот мой SQL:

 CREATE VIEW `wordpress`.`ffi_be_v_book_details` AS ( SELECT ffi_be_courses. * , COALESCE( `Total` , 0 ) AS `Total` FROM `ffi_be_courses` LEFT JOIN ( SELECT * , COUNT( `Course` ) AS `Total` FROM ffi_be_courses RIGHT JOIN ( SELECT `Course` FROM `ffi_be_bookcourses` LEFT JOIN `ffi_be_sale` ON ffi_be_bookcourses.SaleID = ffi_be_sale.SaleID WHERE DATE_ADD( ffi_be_sale.Upload, INTERVAL( SELECT `BookExpireMonths` FROM `ffi_be_settings` ) MONTH ) > CURDATE( ) AND ffi_be_sale.Sold = '0' GROUP BY ffi_be_bookcourses.SaleID ) AS `q1` ON ffi_be_courses.Code = q1.Course GROUP BY q1.Course ) AS `q2` ON ffi_be_courses.Code = q2.Code WHERE ffi_be_courses.Type = 'Arts' ORDER BY ffi_be_courses.Name ASC ) 

Спасибо за ваше время.

    Вам не хватает того факта, что представления в MySQL не допускают подзапросы в предложении from . Однако они разрешены в предложениях select и where и having .

    Документация достаточно ясна:

    Подзапросы не могут использоваться в предложении FROM представления.

    В вашем случае вы, вероятно, можете переписать предложение from как коррелированный подзапрос в предложении select . Вы также можете использовать несколько уровней просмотров, чтобы делать то, что хотите.

    РЕДАКТИРОВАТЬ:

    Оператор SELECT в SQL имеет следующие предложения: SELECT , FROM , WHERE , GROUP BY , HAVING и ORDER BY (в соответствии со стандартом). Кроме того, MySQL добавляет такие вещи, как LIMIT и INTO OUTFILE . Вы можете видеть это так, как MySQL описывает предложение SELECT в документации . Вы также можете увидеть это в документации практически для любой базы данных.

    Такие операции, как join являются частью предложения FROM (аналогично WITH ROLLUP является частью GROUP BY а DESC является частью ORDER BY ). Они могут казаться тайными синтаксическими соглашениями, но это становится важным, когда существует ограничение, подобное вышеизложенному.

    Возможно, одной из причин путаницы является стиль отступов, который выглядит следующим образом:

     select . . . from t1 inner join t2 on . . . 

    Там, где утверждения присоединения выстраиваются под select . Это вводит в заблуждение. Я бы написал это как:

     select from t1 join t2 on . . . 

    Под select. выстраиваются только select предложения select.

    Вышеуказанные ответы верны. MySQL 5.5 не разрешает подзапросы в предложении FROM. Теперь это разрешено в MySQL 5.7.7 и более поздних версиях.

    См. Документацию –

    Определение вида подчиняется следующим ограничениям:

    Оператор SELECT не может содержать подзапрос в предложении FROM.

    Создайте отдельный вид для каждого из предложения FROM.