Помогите составить запрос

Статус
В этой теме нельзя размещать новые ответы.

roddik

Колбаска
Регистрация
26 Янв 2007
Сообщения
346
Реакции
292
Привет, пробую такой запрос
DELETE FROM `domains` `d` WHERE (SELECT COUNT(1) FROM `posts` WHERE `domain` = `d`.`id`) = 0
Соответственно надо удалить из таблицы все домены, по которым нету постов, но нужно в подзапросе указать, что айдишник берется от домена, а не от поста. Запрос выше не работает -
#1064 - 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 '`d` WHERE (SELECT COUNT(1) FROM `posts` WHERE `domain` = `d`.`id`) = 0' at line 1

Как исправить?
 
попробуйте так
Код:
DELETE FROM `domains` AS `d` WHERE (SELECT COUNT(*) FROM `posts` WHERE `domain` = `d`.`id`) = 0

Если можно структуру таблиц domains и posts
 
Возможно будет проще скриптом извлечь сначала домены с 0 постов, а потом их удалить.
 
.WishMaster., #1064 - 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 'AS `d` WHERE (SELECT COUNT(*) FROM `posts` WHERE `domain` = `d`.`id`) = 0' at line 1

BaziliX, понятно, что можно сделать так, но вот в самом мускуле тоже должно быть возможно
 
delete from domains where id not in (select domain from posts)
 
Возможно будет проще скриптом извлечь сначала домены с 0 постов, а потом их удалить.

это лучше извлечь в виде множнства в запросе, а потом уже удалять
Точный запрос смогу написать когда дадите структуру таблиц
 
Покрасивше, так

Код:
DELETE 
FROM `domains`
FROM `domains` `d` WHERE (SELECT COUNT(*) FROM `posts` WHERE `domain` = `d`.`id`) = 0

либо попроще так

Код:
DELETE
FROM `domains` 
WHERE id IN 
    (SELECT d.id FROM `domains` `d` WHERE  
            (SELECT COUNT(*) FROM `posts` WHERE `domain` = `d`.`id`) = 0)
 
Статус
В этой теме нельзя размещать новые ответы.
Назад
Сверху