Удалить из двух таблиц

sobachnik

Новичок
Привет всем!
Что-то не соображу никак, наверно нехватает знаний по MySQL...
В общем есть две таблицы, во второй могут быть (а могут и не быть) записи, соответствующие первой таблице по некому полю (id). Т.е., например, такие:
PHP:
CREATE TABLE `t1` (
	`id` VARCHAR(8) NOT NULL DEFAULT '',
	`some_field` VARCHAR(32) NULL DEFAULT NULL,
	UNIQUE KEY(`id`)
) TYPE = MYISAM CHECKSUM = 1 DEFAULT CHARACTER SET = utf8 COLLATE = utf8_general_ci;

CREATE TABLE `t2` (
	`t1_id` VARCHAR(8) NOT NULL DEFAULT '',
	`some_other_field` VARCHAR(255) NULL DEFAULT NULL,
	KEY(`t1_id`)
) TYPE = MYISAM CHECKSUM = 1 DEFAULT CHARACTER SET = utf8 COLLATE = utf8_general_ci;

INSERT INTO `t1` (`id`, `some_field`) VALUES ('abcdefgh', 'asdasdasdasdasd');
INSERT INTO `t1` (`id`, `some_field`) VALUES ('ijklmnop', 'qweqweqweqweqwe');
INSERT INTO `t1` (`id`, `some_field`) VALUES ('qrstubwx', 'asdasdasdasdasd');
INSERT INTO `t1` (`id`, `some_field`) VALUES ('qwertyqq', 'qweqweqweqweqwe');
INSERT INTO `t2` (`t1_id`, `some_other_field`) VALUES ('abcdefgh', 'zxczxczxczxczxczxczxc');
INSERT INTO `t2` (`t1_id`, `some_other_field`) VALUES ('ijklmnop', 'zxczxczxczxczxczxczxc');
Нужно удалить все записи из первой таблицы, удовлетворяющие некоему условию (например, где `some_field` = 'qweqweqweqweqwe') и при этом чтобы из второй таблицы удалились все записи, у которых `t2`.`t1_id` соответствуют `t1`.`id` удаляемым из первой таблицы записям.
При этом, даже если во второй таблице нету ни одной записи с нужным `t2`.`t1_id`, из первой они всё равно должны удалиться.
Я тут составил нечто:
PHP:
DELETE FROM `t1`, `t2`
	USING `t1`, `t2`
	WHERE `t1`.`id` = `t2`.`t1_id` AND `t1`.`some_field` = 'qweqweqweqweqwe';
Но это не совсем то. А именно, оно не удалит записи из первой таблицы, если во второй нету соответствий.
Надеюсь понятно объяснил, был бы рад подсказке.
 

sobachnik

Новичок
Спасибо!
Странно, вчера с LEFT JOIN в DELETE запросе пробовал делать, но оно на что-то ругалось. Наверно сделал какую-нить очепятку, но увидев ругательства решил, что в DELETE пользоваться LEFT JOIN нельзя, так как ругательство именно со слов LEFT JOIN начиналось :)

А по поводу InnoDB - незнаю даже, в других местах наоборот говорят, что не стоит этим пользоваться... Типа медленное оно очень. Хотя с другой стороны не facebook пишу...
 
Сверху