Как обновить несколько таблиц, используя INNER JOIN и несколько SELECT - PullRequest
0 голосов
/ 23 января 2019

Я пытаюсь обновить 2 таблицы, используя внутреннее соединение и устанавливая значения с 2 результатами из переменных.Наконец-то мне удалось заставить его работать на SELECT.Я хочу обновить мои таблицы с длинным предложением where.И установить результат из запроса выбора.

Код подходит для выбора. Я получаю свои результаты:

SET @DefID = "5289";

SELECT pt1.ID, pt1.post_title, pt1.post_content, mt2.meta_value
FROM wp_posts AS pt1

INNER JOIN wp_postmeta AS mt1
ON ( pt1.ID = mt1.post_id )
INNER JOIN wp_postmeta AS mt2
ON ( pt1.ID = mt2.post_id )
INNER JOIN wp_postmeta AS mt3
ON ( pt1.ID = mt3.post_id )

WHERE 
    pt1.ID != @DefID
AND
    pt1.post_title LIKE '%Banda Sea DIVING Cruise with Tidak%'
AND 
    mt1.meta_key = 'tourmaster-tour-date-avail'
AND 
    CAST(mt1.meta_value AS DATE) >= '2019-01-23'
AND 
    mt2.meta_key = '_cornerstone_data'
AND 
    mt3.meta_key = 'tourmaster-tour-duration'
AND 
    mt3.meta_value = '10'
AND    
    pt1.post_type = 'tour'
AND 
    pt1.post_status = 'publish'

ORDER BY mt1.meta_value ASC

Но не работает с UPDATE

SET @DefID = "myID";
SET @post_content = ( SELECT wp_posts_bak.post_content FROM wp_posts_bak WHERE wp_posts_bak.ID = @DefID );
SET @meta_value = ( SELECT wp_postmeta_bak.meta_value FROM wp_postmeta_bak WHERE wp_postmeta_bak.post_id = @DefID AND wp_postmeta_bak.meta_key = '_cornerstone_data');

UPDATE wp_posts_bak AS pt1, wp_postmeta_bak AS mt0

INNER JOIN wp_postmeta_bak AS mt1 ON pt1.ID = mt1.post_id
INNER JOIN wp_postmeta_bak AS mt2 ON pt1.ID = mt2.post_id
INNER JOIN wp_postmeta_bak AS mt3 ON pt1.ID = mt3.post_id

SET 
    pt1.post_content  = @post_content,
    mt0.meta_value = @meta_value

WHERE
    pt1.ID != @DefID
AND 
    pt1.post_title LIKE '%Banda Sea DIVING Cruise with Tidak%'
AND 
    mt1.meta_key = 'tourmaster-tour-date-avail'
AND 
    CAST(mt1.meta_value AS DATE) >= '2019-01-23'
AND 
    mt2.meta_key = '_cornerstone_data'
AND 
    mt3.meta_key = 'tourmaster-tour-duration'
AND 
    mt3.meta_value = '10'
AND    
    pt1.post_type = 'tour'
AND 
    pt1.post_status = 'publish'

Получена следующая ошибка: Неизвестный столбец 'pt1.ID'in' на предложении.

1 Ответ

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

Я наконец нашел причину проблемы. В ОБНОВЛЕНИИ мне пришлось удалить 2 таблицы.

Итак, решение:

SET @DefID = "5289";
SET @post_content = ( SELECT wp_posts_bak.post_content FROM wp_posts_bak WHERE wp_posts_bak.ID = @DefID );
SET @meta_value = ( SELECT wp_postmeta_bak.meta_value FROM wp_postmeta_bak WHERE wp_postmeta_bak.post_id = @DefID AND wp_postmeta_bak.meta_key = '_cornerstone_data');

UPDATE wp_posts_bak AS pt1

INNER JOIN wp_postmeta_bak AS mt1 ON pt1.ID = mt1.post_id
INNER JOIN wp_postmeta_bak AS mt2 ON pt1.ID = mt2.post_id
INNER JOIN wp_postmeta_bak AS mt3 ON pt1.ID = mt3.post_id

SET 
    pt1.post_content  = @post_content,
    mt2.meta_value = @meta_value

WHERE
    pt1.ID != @DefID
AND 
    pt1.post_title LIKE '%Banda Sea DIVING Cruise with Tidak%'
AND 
    mt1.meta_key = 'tourmaster-tour-date-avail'
AND 
    CAST(mt1.meta_value AS DATE) >= '2019-01-23'
AND 
    mt2.meta_key = '_cornerstone_data'
AND 
    mt3.meta_key = 'tourmaster-tour-duration'
AND 
    mt3.meta_value = '10'
AND    
    pt1.post_type = 'tour'
AND 
    pt1.post_status = 'publish'
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...