Alexos
Новичок
Удаление связей с товарами
Здравствуйте.
Подскажите, пожалуйста, как лучше решить задачу:
Таблица товара связана как отношение многие ко многим с 2мя другими таблицами razdelTable и partsTable через соответствующие линкующие таблицы linksRazdelTable и linksPartsTable:
[sql]
CREATE TABLE '.linksRazdelTable.' (
`cid` int(11),
`item_id` int(11)
)
CREATE TABLE '.linksPartsTable.' (
`parts_id` int(11),
`item_id` int(11)
)
[/sql]
Задача такая. Нужно удалить какую либо одну запись из таблицы partsTable при этом, чтобы связи не болтались, их тоже естественно надо удалить. Делаю так:
Все бы хорошо, но вот беда
- один товар может быть связан с несколькими записями из partsTable. В моем примере грохаются все связи товаров в таблице linksRazdelTable, который связан с удаляемой записью из partsTable (см. 2й запрос)
А надо, чтобы если товар был связан с ещё какими либо записями из partsTable, то его связи по таблице linksRazdelTable сохранялись, а если только с одной (удаляемой!), то грохались. Тупо перебирать циклом каждый товар и смотреть, связан ли он с одной или несколькими записями с partsTable, мягко говоря не хочется.
Подскажите, пожалуйста, какое решение представляется наиболее рациональным.
Здравствуйте.
Подскажите, пожалуйста, как лучше решить задачу:
Таблица товара связана как отношение многие ко многим с 2мя другими таблицами razdelTable и partsTable через соответствующие линкующие таблицы linksRazdelTable и linksPartsTable:
[sql]
CREATE TABLE '.linksRazdelTable.' (
`cid` int(11),
`item_id` int(11)
)
CREATE TABLE '.linksPartsTable.' (
`parts_id` int(11),
`item_id` int(11)
)
[/sql]
Задача такая. Нужно удалить какую либо одну запись из таблицы partsTable при этом, чтобы связи не болтались, их тоже естественно надо удалить. Делаю так:
PHP:
$db->query('DELETE FROM '.partsTable.
' WHERE id = '.$_GET['part_id']) or die ($db->error());
$db->query('DELETE FROM '.linksRazdelTable.'
WHERE item_id IN (SELECT item_id FROM '.linksPartsTable.' WHERE parts_id = '.$_GET['part_id'].')') or die ($db->error());
$db->query('DELETE FROM '.linksPartsTable.
' WHERE parts_id = '.$_GET['part_id']) or die ($db->error());
- один товар может быть связан с несколькими записями из partsTable. В моем примере грохаются все связи товаров в таблице linksRazdelTable, который связан с удаляемой записью из partsTable (см. 2й запрос)
А надо, чтобы если товар был связан с ещё какими либо записями из partsTable, то его связи по таблице linksRazdelTable сохранялись, а если только с одной (удаляемой!), то грохались. Тупо перебирать циклом каждый товар и смотреть, связан ли он с одной или несколькими записями с partsTable, мягко говоря не хочется.Подскажите, пожалуйста, какое решение представляется наиболее рациональным.