..


Рекламные ссылки

Удалить эти таблицы, используя JOIN

Статья, написанная Максом Босси

В этой короткой статье мы увидим, как можно делать запросы для удаления (DELETE) использования потенциала соединений, то есть, создание связей между таблицами в MySQL.
На самом деле мы уже видели, как использовать JOIN в выборе данных (SELECT) и обновляется (ДОПОЛНЕНО), здесь мы только расширить то, что уже научились.

Чтобы лучше узнать потенциал этой техники следует рассмотреть в нашей привычке считать конкретный случай использования.

Скажем, мы должны работать на базе гипотетических склада состоит из следующих таблиц (из которых мы описываем их структуры):

  • Полки
    • ID (INT)
    • описание (VARCHAR)
  • Полки
    • ID (INT)
    • scaffale_id (INT)
    • описание (VARCHAR)
  • продукты
    • ID (INT)
    • ripiano_id (INT)
    • имя (VARCHAR)
    • цена (с плавающей точкой)
Теперь предположим, у вас есть необходимость ликвидации продуктов. Мы обращаемся к следующим трем разным результатам.

1) Предположим, вы хотите удалить один продукт, который вы знаете ID. В этом случае вы можете просто запустить тривиальный запрос:

 



 DELETE * FROM продуктов WHERE ID = 1;

 
2) тот же запрос будет использоваться, если вы хотите удалить все продукты упакованы в данном полку:
 



 DELETE * FROM продукции ГДЕ ripiano_id = 1;

 
3) Но если вы хотите удалить все продукты в данной полке?
Простой запрос, таких как было замечено ранее не были бы возможны, потому что в "продуктах" нет поля, которое ссылается на полке!

На самом деле проблема не является непреодолимой! с небольшим 'ловкости в обращении запросов, по сути, препятствием является легко обойти! Как? с JOIN! Вот пример:

 



 DELETE продуктов .*







 От продуктов INNER JOIN полки







 ВКЛ = prodotti.ripiano_id ripiani.id







 ГДЕ ripiani.scaffale_id = 1;



При этом мы создали связи между двумя таблицами «продукты» и «полки» (по области JOIN "ripiano_id" стол, который соответствует первому идентификатор секунду), чтобы использовать поле "scaffale_id" этого " в последнюю очередь.

На первый взгляд, может быть, может показаться немного сложнее ... на самом деле довольно проста. Речь идет о создании логической связи между двумя таблицами, чтобы использовать информацию, чтобы управлять первую секунду.

Где, в дополнение к продуктам, мы хотели, чтобы удалить все полки полки соответствующей данному pututo мы используем немного другой запрос:

 



 DELETE продуктов .*, полки .*







 От продуктов INNER JOIN полки







 ВКЛ = prodotti.ripiano_id ripiani.id







 ГДЕ ripiani.scaffale_id = 1;



В сущности, это представление запроса чуть выше той лишь разницей, что отмена будет влиять не только на полях в таблице «продукты»:
 



 продуктов .*

 
но и те, из таблицы «полка»:
 



 Полки .*

 
При возникновении вопросов или просьб я приглашаю вас сообщение на нашем форуме .

В той же категории ...
E-Learning
MS Access (хороший) MS Access (хороший)
Узнайте, как создавать и управлять базами данных быстро и легко. Начиная от 29 €.
MySQL (курс) MySQL (курс)
Управление с открытым исходным кодом базы данных. С 39 €.
SQL и базы данных (курс) SQL и базы данных (курс)
Создание и управление реляционными базами данных. С 39 €.
Рекламные ссылки