Как сделать поиск в двух таблицах?

Ссылка скопирована
16 марта 2026 1 ответ

Есть 2 таблицы: и wp_posts и wp_reviews.

Как сделать поиск в двух таблицах?

Подскажите как обновить статус поста в таблице wp_posts (`post_status`) на 'draft' для тех записей, у которых в таблице wp_reviews нет строк. wp_posts `ID` равен wp_reviews `company_id`

т.е. если в таблице wp_reviews запись с company_id=2001 не существует, то для таблицы wp_posts для строки с ID=2001 обновляем post_status на 'draft'

Дополнительно:

т.е. если в таблице wp_reviews запись с company_id=2001 не существует, то для таблицы wp_posts для строки с ID=2001 обновляем post_status на 'draft'

Как бы, у вас уже на 80% запрос сформирован на естественном языке пригодный для прямого транслирования в SQL. Как-то стыдно не записать его прямым текстом:

update wp_posts p set p.post_status = 'draft' where not exists (select 1 from wp_reviews r where r.связующий_ключ = p.связующий_ключ)

update wp_posts p set p.post_status = 'draft' where not exists (select 1 from wp_reviews r where r.связующий_ключ = p.связующий_ключ)

Осталось определиться, как называются ключи в той и другой таблице, связывающие данные этих таблиц.
PS: вероятно это: r.company_id = p.id.

  • да пробовал, чтото ошибка вылетала при моих запросах.

    не конкретно для id=2001, а для всех, которых нет в таблице wp_reviews

  • какой текст ошибки?
  • alexalexes, пробую просто выборку
    SELECT * FROM wp_posts a
    NOT EXISTS (SELECT * FROM wp_reviews b where a.ID = b.company_id)

    (1064): Syntax error near 'NOT EXISTS (SELECT * FROM wp_reviews b where a.ID = b.company_id)' at line 2

    ваш запрос тоже работает, но надо сделать не только дя id=2001, а для всех отсутствующих записей

  • Уберите из where "p.id = 2001 and" и получите условие для всех записей.

    SELECT * FROM wp_posts a
    /* куда дели where ????? */
    NOT EXISTS (SELECT * FROM wp_reviews b where a.ID = b.company_id)

  • действительно, спасибо
Нужно решить такую задачу?

Опишите проблему, и специалист поможет с настройкой, исправлением ошибки или доработкой сайта. Подберём понятный план работ без лишней переписки.

Заказать помощь
Лучший ответ
1
Антон С. Ответ

Для того чтобы выполнить поиск данных в двух таблицах одновременно, можно воспользоваться оператором UNION в SQL. UNION объединяет результаты двух SELECT запросов в один результат.

Пример SQL запроса для выполнения поиска в двух таблицах:

SELECT column1, column2 FROM table1 WHERE column1 = 'value'
UNION
SELECT column1, column2 FROM table2 WHERE column1 = 'value';

SELECT column1, column2 FROM table1 WHERE column1 = 'value' UNION SELECT column1, column2 FROM table2 WHERE column1 = 'value';

В данном примере мы ищем значения в столбцах column1 и column2 из двух таблиц table1 и table2, где значение в column1 равно 'value'. UNION объединяет результаты запросов из обеих таблиц.

Если необходимо добавить дополнительные условия для поиска, их можно также указать в каждом из SELECT запросов перед оператором UNION.

Обрати внимание, что структура таблиц (названия столбцов, их типы и т.д.) должна быть схожей, чтобы можно было выполнить UNION запрос.

Таким образом, используя UNION в SQL, можно осуществлять поиск данных в двух и более таблицах одновременно.

Другие ответы (0)

Пока нет других ответов. Будьте первым, кто поможет автору.

Ответить на вопрос

комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Вам также может быть интересно