Имеются таблицы типа: Код (Text): catalogs: |----| | id | |----| | 3 | | 4 | collections: |----|---------| | id | catalog | |----|---------| | 1 | 4 | | 2 | 3 | | 3 | 4 | photos: |----|------------| | id | collection | |----|------------| | 1 | 1 | | 2 | 2 | | 4 | 3 | | 6 | 1 | Требуется составить два запроса: 1)Выбрать id всех фотографий (в примере - 1, 4 и 6) которые входят в коллекции (в примере - 1 и 3) каталога 4. 2)Удалить каталог 4 вместе со всеми его коллекциями и всеми фотографиями в этих коллекциях. ...или тут без циклов никак?
Может что и подзабыл, но должно работать :wink: [sql] SELECT `photos.id` FROM `photos` p LEFT JOIN `collection` c USING (c.id = p.collection) WHERE c.catalog = 4; DELETE FROM `photos` p WHERE p.collection IN ( SELECT id FROM `collection` c WHERE c.catalog =4 ) DELETE FROM `collection` c WHERE c.catalog = 4; DELETE FROM `catalog` where id = 4; [/sql]
[sql]select ph.id from photos ph left join collection cl on (ph.collection = cl.id ) where cl.catalog = 4;[/sql] 2. Поставь фориген
Попробуй это: [sql] DELETE FROM `catalogs`, `photos`, `collections` USING `catalog`, `photos`, `collections` WHERE `photos`.`collection`=`collections`.`id` AND `collections`.`catalog`=`catalogs`.`id` AND `catalogs`.`id`=4[/sql] P.S. Не рекомендую играть со множественными числительными (то есть photos и photo). Лично у меня такие вещи постоянно вызывали проблемы - забывал, где писать s, а где нет.
Типа того. Показывает, какие таблицы нужно объединять. В конструкции с JOIN для объединения должны поля одинаково называться в объединяемых таблицах.
На всякий случай расскажу: Две таблицы item id | category | title | text category id | name Задача: выбрать все статьи и названия категорий к ним: [sql] SELECT `item`.`title`, `category`.`name` FROM `item` LEFT JOIN `category` ON `category`.`id`=`item`.`category` title name Овощное рагу Рецепты Курица Рецепты 69 Позы [/sql] ON нужен, когда необходимо связать таблицы с разными именами полей. А теперь USING: item id | category_id | title | text category category_id | name [sql] SELECT `item`.`title`, `category`.`name` FROM `item` LEFT JOIN `category` USING (`category_id`) title name Овощное рагу Рецепты Курица Рецепты 69 Позы [/sql] Если не сложно, можешь мой вариант проверить?