Как правильно составить определенный SQL запрос для базы сайта на DLE?
Всем привет, есть сайт на DLE. Там есть таблицы dle_comments и dle_post .
Нужен запрос или комбинация запросов, чтобы удалить те комментарии, для которых новость уже отсутствует (так произошло, потому что новости удалялись иногда не через админку а напрямую из БД).
Так вот нужно, чтобы из dle_comments бралось поле post_id , которое сравнивалось с таблицей dle_post с полем id . Если нашлись совпадения ,то оставляем без изменений, если нет, то удаляем всю строчку из таблицы dle_comments.
Дополнительно:
Типичный WHERE NOT EXISTS.
Ответы:
Можно использовать WHERE NOT EXISTS как посоветовал Akina
DELETE FROM dle_comments WHERE NOT EXISTS (SELECT 1 FROM dle_post WHERE dle_post.id = dle_comments.post_id); |
DELETE FROM dle_comments WHERE NOT EXISTS (SELECT 1 FROM dle_post WHERE dle_post.id = dle_comments.post_id);
а можно LEFT JOIN
DELETE dle_comments.* FROM dle_comments LEFT JOIN dle_post ON dle_post.id = dle_comments.post_id WHERE dle_post.id IS NULL; |
DELETE dle_comments.* FROM dle_comments LEFT JOIN dle_post ON dle_post.id = dle_comments.post_id WHERE dle_post.id IS NULL;
Проверить SQL онлайн
Опишите проблему, и специалист поможет с настройкой, исправлением ошибки или доработкой сайта. Подберём понятный план работ без лишней переписки.
Пока нет других ответов. Будьте первым, кто поможет автору.
Ответить на вопрос
Для того чтобы правильно составить SQL запрос для базы сайта на DLE (DataLife Engine), необходимо учитывать структуру базы данных и требования к запросу.
Прежде всего, необходимо понимать, какие данные вы хотите извлечь из базы данных. Например, если вы хотите выбрать все записи из определенной таблицы, то запрос будет выглядеть следующим образом:
SELECT * FROM table_name;
Здесь table_name - это название таблицы, из которой вы хотите извлечь данные. Звездочка (*) означает, что вы хотите выбрать все столбцы из таблицы. Если же вы хотите выбрать только определенные столбцы, то их названия необходимо перечислить через запятую после ключевого слова SELECT.
Если вам нужно выбрать данные с определенным условием, то используйте ключевое слово WHERE. Например, если вы хотите выбрать все записи, где значение в столбце column_name равно определенному значению value, то запрос будет выглядеть так:
SELECT * FROM table_name WHERE column_name = 'value';
Также можно использовать другие операторы сравнения, такие как >, =, <=, , BETWEEN, IN и т.д.
Если вам нужно выполнить сложные запросы с объединением таблиц, сортировкой, группировкой и другими операциями, изучите документацию по SQL или обратитесь за помощью к специалисту.
Важно помнить, что при работе с базой данных необходимо быть осторожным, чтобы избежать уязвимостей безопасности, таких как SQL-инъекции. Используйте подготовленные запросы или экранируйте значения, передаваемые в запросе, чтобы защитить свою базу данных от атак.