Синтаксическая ошибка mysql при выполнении запроса ранжирования - PullRequest
0 голосов
/ 19 ноября 2011

Я хочу выполнить запрос ранжирования, но я не уверен, каков правильный синтаксис вот мой запрос:

  static public function sortranks(){
    global $db;
    $sql ="TRUNCATE TABLE `ranking`";
    $db->query($sql);

    $sql = "INSERT INTO `ranking` (`user_id`) VALUES 
    ( SELECT `employe_id` FROM `rates_employe` WHERE `status` = '0' ORDER BY rawpoint DESC ) ";
    $db->query($sql);

    $sql = "UPDATE  rates_employe , ranking  SET rates_employe.rank = ranking.rank WHERE 
    rates_employe.employe_id = ranking.user_id ";
    $db->query($sql);
    echo 'ok';
    exit;
  }

я получаю синтаксическую ошибку при выполнении этого запроса

Запрос к базе данных не выполнен: у вас ошибка в синтаксисе SQL; проверить руководство, которое соответствует вашей версии сервера MySQL для права синтаксис для использования рядом с 'SELECT employe_id FROM rates_employe WHERE status = '0' ORDER BY rawpoint 'в строке 2

Ответы [ 2 ]

1 голос
/ 19 ноября 2011

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

Измените конкатенацию строк .= простым присваиванием, и после назначения каждого запроса выполните его. Такие как:

 $sql = "TRUNCATE TABLE ranking";
 $db->query($sql);
 $sql = "INSERT INTO `ranking`(`user_id`) VALUES ..."; 
 $db->query($sql);

Также удалите ЗНАЧЕНИЯ из запроса:

INSERT INTO ranking (user_id) (ВЫБЕРИТЕ employe_id ОТ rates_employe ГДЕ status = '0' ПОРЯДОК РАБОЧЕЙ ТОЧКИ DESC)

Извините, если я звучу педантично, но на английском языке Employee пишется с двумя e в конце слова.

0 голосов
/ 19 ноября 2011

Попробуйте выполнить каждый запрос отдельно:

static public function sortranks(){
    global $db;
    $sql ="TRUNCATE TABLE ranking";
    $db->query($sql);

    $sql = "INSERT INTO `ranking`(`user_id`) VALUES 
    ( SELECT `employe_id` FROM `rates_employe` WHERE `status` = '0' ORDER BY `rawpoint` DESC ) ";
    $db->query($sql);

    $sql = "UPDATE  rates_employe , ranking  SET rates_employe.rank = ranking.rank WHERE 
    rates_employe.employe_id = ranking.user_id ";

    $db->query($sql);
    echo 'done';
    exit;
  }

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...