Ошибка «Неожиданный порядок предложений» при экспорте и Excel файл в MySQL - PullRequest
0 голосов
/ 15 июня 2019

почему-то мне нужно экспортировать результат запроса и сохранить файл csv в mysql.

что я написал:

SELECT orders.user_id, orders.order_id, members.name, members.family, 
       orders.agent_id, CONCAT(m.name, ' ', m.family) AS agent_name 
  FROM orders 
  JOIN members 
    ON members.username=orders.user_id 
  JOIN members m 
    ON orders.agent_id=m.username 
 WHERE order_status=4 and pay_method='verbalPayment' 
   AND agent_id is not NULL 
   AND order_time BETWEEN 1559935800 AND 1560596861 
  INTO OUTFILE 'weekly_orders.csv' FIELDS TERMINATED BY ',';

Но когда я запустил этот запрос, я получил эту ошибку:

Статический анализ:

В ходе анализа были обнаружены 1 ошибки.

Неожиданный порядок предложений.(возле «ОТ» в позиции 131)

Я не знаю, в чем проблема и как я могу ее решить.

Ответы [ 3 ]

1 голос
/ 15 июня 2019

Вам нужно поставить INTO OUTFILE 'weekly_orders.csv' FIELDS TERMINATED BY ',' непосредственно перед FROM предложением,

например

....INTO OUTFILE 'weekly_orders.csv' FIELDS TERMINATED BY ','
    FROM orders ....
1 голос
/ 15 июня 2019

Очевидно, проблема в том, что INTO следует за SELECT. Я бы предложил написать запрос как:

SELECT o.user_id, o.order_id, mu.name, mu.family, 
       o.agent_id, CONCAT_WS(' ', ma.name, ma.family) AS agent_name 
INTO OUTFILE 'weekly_orders.csv' FIELDS TERMINATED BY ','
FROM orders o JOIN
     members mu
     ON mu.username = o.user_id JOIN
     members ma
     ON o.agent_id = ma.username 
 WHERE o.order_status = 4 AND
       o.pay_method = 'verbalPayment' AND
       o.order_time BETWEEN 1559935800 AND 1560596861 ;

Примечания:

  • Условие agent_id is not NULL является избыточным. JOIN позаботится об этом.
  • Псевдоним всех ваших таблиц. mu для "член как пользователь" и ma для "член как агент" легче понять.
  • CONCAT_WS() работает, даже если одно из имен NULL.
  • Я также был бы склонен конвертировать константы даты из формата ГГГГ-ММ-ДД в формат Unix, чтобы запрос был легче понять (но вы можете понять, что означают эти числа).
1 голос
/ 15 июня 2019

неправильно в позиции предложения

  SELECT orders.user_id
    , orders.order_id
    , members.name
    , members.family
    , orders.agent_id
    , CONCAT(m.name, ' ', m.family) AS agent_name 
    INTO OUTFILE 'weekly_orders.csv' FIELDS TERMINATED BY ','
    FROM orders 
    JOIN members ON members.username=orders.user_id 
    join members m on orders.agent_id=m.username 
    where order_status=4 
    and pay_method='verbalPayment' 
    and agent_id is not NULL and order_time between 1559935800 and 1560596861 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...