Обновление строк таблицы из разных данных таблицы не работает - PullRequest
0 голосов
/ 29 января 2019

У меня есть две таблицы в моей базе данных.Один называется wp_tickets, а другой - wp_tickets_regenerated.

Я пытаюсь обновить некоторые данные в таблице wp_tickets_regenerated из таблицы wp_tickets, если lottery_id совпадает, поэтому я заканчиваюс новой таблицей с разными тикетами, сгенерированными для каждого заказа, размещенного для этого продукта.

Код, который у меня есть, выдает ошибку:

 WordPress database error 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 'FROM wp_tickets
        WHERE lottery_id = wp_tickets.lottery_id' at line 6 for query UPDATE wp_tickets_regenerated

Может кто-нибудь помочь, пожалуйста?

wp_tickets table

+---------+-----------+-----------+---------------+----------+------------+
| user_id | full_name | answer_id | ticket_number | order_id | lottery_id |
+---------+-----------+-----------+---------------+----------+------------+
| 0       | test      | 1         | 3             | 791      | 790        |
+---------+-----------+-----------+---------------+----------+------------+
| 0       | test      | 1         | 5             | 791      | 790        |
+---------+-----------+-----------+---------------+----------+------------+
| 0       | test      | 1         | 10            | 791      | 790        |
+---------+-----------+-----------+---------------+----------+------------+

wp_tickets_regenerated

   +---------+-----------+-----------+---------------+----------+------------+
    | user_id | full_name | answer_id | ticket_number | order_id | lottery_id |
    +---------+-----------+-----------+---------------+----------+------------+
    |         |           |           | 1             |          | 790        |
    +---------+-----------+-----------+---------------+----------+------------+
    |         |           |           | 2             |          | 790        |
    +---------+-----------+-----------+---------------+----------+------------+
    |         |           |           | 3             |          | 790        |
    +---------+-----------+-----------+---------------+----------+------------+

То, что у меня пока есть:

 $wpdb->query(
       'UPDATE wp_tickets_regenerated
        SET user_id = wp_tickets.user_id,
            full_name = wp_tickets.full_name,
            answer_id = wp_tickets.answer_id,
            order_id = wp_tickets.order_id
        FROM wp_tickets
        WHERE lottery_id = wp_tickets.lottery_id'
  );

Ответы [ 2 ]

0 голосов
/ 29 января 2019

Вам нужна внутренняя таблица соединений wp_tickets для обновления

Попробуйте это

UPDATE wp_tickets_regenerated
INNER JOIN wp_tickets ON wp_tickets_regenerated.lottery_id = wp_tickets.lottery_id
SET wp_tickets_regenerated.user_id = wp_tickets .user_id,
    wp_tickets_regenerated.full_name = wp_tickets .full_name,
    wp_tickets_regenerated.answer_id = wp_tickets .answer_id,
    wp_tickets_regenerated.order_id = wp_tickets .order_id
WHERE wp_tickets_regenerated.lottery_id = wp_tickets.lottery_id'

Надеюсь, это поможет вам

0 голосов
/ 29 января 2019

Возможно, вам нужно внутреннее объединение для обновления

    UPDATE wp_tickets_regenerated a 
    INNER JOIN wp_tickets b a.lottery_id = b.lottery_id
    SET a.user_id = b.user_id,
        a.full_name = b.full_name,
        a.answer_id = b.answer_id,
        a.order_id = b.order_id

(из в обновлении ... не используется)

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