Сложно сделать SQL-запрос - PullRequest
0 голосов
/ 12 ноября 2018

Я проверил, что данные поступают в $ posts_not_to_select как простой массив, и все остальное в порядке, но показывает ошибку, показанную ниже:

Исключение № 0 (Zend_Db_Statement_Exception): SQLSTATE [42000]: синтаксис ошибка или нарушение прав доступа: 1064 У вас ошибка в синтаксисе SQL; проверьте руководство, которое соответствует вашей версии сервера MySQL для правильный синтаксис для использования рядом с 'WHERE entity_id NOT IN (ВЫБЕРИТЕ post_id ОТ mst_blog_store_post ГДЕ НЕ хранится 'в строке 1, запрос был: SELECT * FROM mst_blog_post_entity ORDER BY created_at DESC LIMIT 1 WHERE entity_id NOT IN (ВЫБЕРИТЕ post_id ОТ mst_blog_store_post WHERE NOT store_id = 1)

$posts_not_to_selectssql1 = "SELECT post_id FROM mst_blog_store_post WHERE NOT store_id = $storeID";
    $posts_not_to_select12 = $connection->fetchAll($posts_not_to_selectssql1);
    $posts_not_to_select = array();

    foreach ($posts_not_to_select12 as $key => $value){
        $posts_not_to_select[$key] = $value['post_id'];
    }

    "SELECT * FROM `mst_blog_post_entity` ORDER BY `created_at` ASC LIMIT 1 WHERE `entity_id` NOT IN ( '" . implode( "', '" , $posts_not_to_select ) . "' )"

Ответы [ 2 ]

0 голосов
/ 13 апреля 2019
SELECT * FROM `mst_blog_post_entity` WHERE `entity_id` NOT IN ( '" . implode( "', '" , $posts_not_to_select ) . "' )" ORDER BY `created_at` ASC LIMIT 1;

Просто запустите этот запрос в разделе SQL phpmyadmin, и все будет работать нормально.

0 голосов
/ 12 ноября 2018

ORDER BY следует после предложения WHERE.

SELECT * FROM `mst_blog_post_entity` 
WHERE `entity_id` NOT IN ( '" . implode( "', '" , $posts_not_to_select ) . "' )"  
ORDER BY `created_at` ASC LIMIT 1 

Полная последовательность будет:

  • SELECT
  • ОТ
  • ПРИСОЕДИНИТЬСЯ [ВКЛ]
  • ГДЕ
  • GROUP BY
  • HAVING
  • ЗАКАЗАТЬ ПО [LIMIT]
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...