sobachnik
Новичок
Привет всем!
Что-то не соображу никак, наверно нехватает знаний по MySQL...
В общем есть две таблицы, во второй могут быть (а могут и не быть) записи, соответствующие первой таблице по некому полю (id). Т.е., например, такие:
Нужно удалить все записи из первой таблицы, удовлетворяющие некоему условию (например, где `some_field` = 'qweqweqweqweqwe') и при этом чтобы из второй таблицы удалились все записи, у которых `t2`.`t1_id` соответствуют `t1`.`id` удаляемым из первой таблицы записям.
При этом, даже если во второй таблице нету ни одной записи с нужным `t2`.`t1_id`, из первой они всё равно должны удалиться.
Я тут составил нечто:
Но это не совсем то. А именно, оно не удалит записи из первой таблицы, если во второй нету соответствий.
Надеюсь понятно объяснил, был бы рад подсказке.
Что-то не соображу никак, наверно нехватает знаний по 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');
При этом, даже если во второй таблице нету ни одной записи с нужным `t2`.`t1_id`, из первой они всё равно должны удалиться.
Я тут составил нечто:
PHP:
DELETE FROM `t1`, `t2`
USING `t1`, `t2`
WHERE `t1`.`id` = `t2`.`t1_id` AND `t1`.`some_field` = 'qweqweqweqweqwe';
Надеюсь понятно объяснил, был бы рад подсказке.