Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Web программирование > SQL, базы данных
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 16.05.2017, 10:52   #1
Алексей_2012
t45t
Участник клуба
 
Аватар для Алексей_2012
 
Регистрация: 20.03.2012
Сообщений: 1,849
По умолчанию Удаление данных из нескольких таблиц

Ребят, всем привет. Есть 4 взаимосвязанных между собой таблицы, нужно удалить строку данных, которая на скриншоте, пробовал сделать удаление по отдельности из каждой таблицы, начиная с потомков (с models_appr), но sql ругается на наличие автоинкрементируемого первичного ключа, как я только не пробовал удалять данные - бесполезно.

таблицы создавались через диаграмму
Изображения
Тип файла: jpg W4K0Bh6kgos.jpg (116.7 Кб, 118 просмотров)
Тип файла: jpg Y9lJf3WCLW4.jpg (99.8 Кб, 120 просмотров)
from dark to light)
Алексей_2012 вне форума Ответить с цитированием
Старый 16.05.2017, 11:24   #2
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 19,042
По умолчанию

Чего решил, что models_appr какой-то потомок? Последовательность удаления - remont, models, marks, types. А еще лучше каскадное удаление на уровне СУБД. И вообще не понятно на первый взгляд назначение remont
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию

Последний раз редактировалось Аватар; 16.05.2017 в 11:26.
Аватар вне форума Ответить с цитированием
Старый 16.05.2017, 11:35   #3
Алексей_2012
t45t
Участник клуба
 
Аватар для Алексей_2012
 
Регистрация: 20.03.2012
Сообщений: 1,849
По умолчанию

о назначении говорил в этой теме

а как код будет выглядеть?


примерно вот так?

Код:

delete from apparatures where kod_apprts='1'
delete from models where apparures.kod_models=models.kod_models
delete from marks where apparatures.kod_mark=marks.kod_marks
deletet from types_appr where types_appr.kod_types_appr=types_appr. kod_types_appr
from dark to light)
Алексей_2012 вне форума Ответить с цитированием
Старый 16.05.2017, 11:47   #4
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 19,042
По умолчанию

У тебя структура не понятная. У меня мозг воспламенился от такой )) В такой структуре и так как хочется тебе удалить можно только каскадно, последовательно - фиг вам
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 16.05.2017, 11:49   #5
Алексей_2012
t45t
Участник клуба
 
Аватар для Алексей_2012
 
Регистрация: 20.03.2012
Сообщений: 1,849
По умолчанию

а как реализовать в более правильном виде структуру, чтобы можно было бы удалить последовательно
from dark to light)
Алексей_2012 вне форума Ответить с цитированием
Старый 16.05.2017, 11:51   #6
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 19,042
По умолчанию

Сначала покажи по какому критерию и что хочешь удалять, только не тот, что в #3 ))
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 16.05.2017, 12:41   #7
Алексей_2012
t45t
Участник клуба
 
Аватар для Алексей_2012
 
Регистрация: 20.03.2012
Сообщений: 1,849
По умолчанию

смотрите, на первом скриншоте есть таблица, в ней строки данных при выборке из 4 таблиц

т.е. атрибут "Позиция" берется из apparatures.kod_apprts
далее по каждому наименованию из таблиц выводится в программу (тип, марка, модель)

при событии OnClick программа берет позицию щелчка и определяет номер позиции записи, по которой был щелчек, например onClick на второй записи в таблице : apparatures.kod_apprts='2'. Эту запись и хочу удалить.

связи марки,модели и типа между собой нужно для:

(пример)

types_appr
компьютер
телефон

marks_appr
если выбран комп, то показать все марки, относящиеся к компам
если телефон, то к телефонам
при том таблица хранит все данные, но отображаются только нужные в комбобоксе оболочки
models_appr
при выборе марки самсунг, например, показать все модели это марки
from dark to light)
Алексей_2012 вне форума Ответить с цитированием
Старый 16.05.2017, 12:53   #8
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 19,042
По умолчанию

У тебя models, marks и types по сути справочники. К ним внешние ссылки из remont. Досточно было бы и одной - только к models, по ней однозначно можно определить marks и types. При удалении из remont зачем удалять записи из справочников?
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 16.05.2017, 13:11   #9
Алексей_2012
t45t
Участник клуба
 
Аватар для Алексей_2012
 
Регистрация: 20.03.2012
Сообщений: 1,849
По умолчанию

точно, об этом не подумал, спасибо!

значит две связи можно убрать...оставить только модель-аппаратура.

и все же, как удалить данные из справочников, препод сказал нужен такой функционал)
from dark to light)
Алексей_2012 вне форума Ответить с цитированием
Старый 16.05.2017, 13:20   #10
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 19,042
По умолчанию

И как будешь чистить справочники? Для того что бы удалить запись из types нужно удалить все из marks имеющие внешний ключ на types. И для каждой из них все из models имеющие внешний ключ на marks.
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Удаление из нескольких таблиц Nekala БД в Delphi 6 04.12.2014 13:14
Удаление из нескольких таблиц(Delete) manula PHP 11 09.03.2013 23:45
Запрос данных из нескольких таблиц Daslife SQL, базы данных 5 07.01.2013 14:04
выборка данных из нескольких таблиц AlexxxM Microsoft Office Access 0 27.05.2010 12:08
Удаление из нескольких таблиц qwerty1301 Microsoft Office Access 17 05.05.2010 11:34