9 / 9 / 2
Регистрация: 05.07.2013
Сообщений: 86
1

Реализация многие-ко-многим

08.04.2015, 16:42. Показов 2915. Ответов 4
Метки нет (Все метки)

Перечитав десятки схожих тем, я все таки решил создать новую. Не нашел ничего схожего с данной проблемой, точнее дилеммой.
Как реализуется связь многие ко многим мне известно. Приведу пример своих трех таблиц:
1. Компетенции (ИД_компетенции, Наименование_комп)
2. Дисциплины (ИД_дисциплины, Наименование_дисциплины)
3. Комп_Дисципл (ИД_стр, ИД_компетенции, ИД_дисциплины)

База данных подключена к веб-приложению на PHP.

Добавление в 1 и 2 таблицу не составляет труда. Пишем лишь название, автоинкремент увеличивается. С 3 таблицей дела интересней - для того, чтобы добавить связь Компетенция-Дисциплина необходимо знать оба идентификатора.
Пользователь, нажимающий на кнопочки, этого не знает.

Внимание вопрос: Как реализовать добавление?

Каждый раз в коде создавать SELECT на существование обеих записей и полученные ИД вставить в INSERT?

Или, как вариант, написать триггер процедуру на MySQL, которая обработает(получит) текстовые значения для добавления и найдет для них значения ИД и, конечно же, добавит строку в базу?
типа такого:
SQL
1
INSERT INTO Комп_Дисципл (ИД_комп, ИД_дисципл) VALUES (Компетенция1, Дисциплина2);
а процедура сделает все дела и подставит
Кликните здесь для просмотра всего текста
АЙДЮКИ, разгрозит меня гром
в запрос

Добавлено через 20 часов 1 минуту
Как всегда. Тишина
__________________
Помощь в написании контрольных, курсовых и дипломных работ, диссертаций здесь
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
08.04.2015, 16:42
Ответы с готовыми решениями:

Связь многие ко многим
Есть 3 таблицы: Таким запросом всё как - бы отлично выводится как мне надо книга и под ней...

Связь многие-ко-многим
Здравствуйте. Подскажите, пожалуйста, для организации связи "многие-ко-многим" обязательна...

Отношение многие ко многим
Здравствуйте! Есть задача Есть две сущности АВТОРЫ и КНИГИ, связь М-М (многие к многим). Создайте...

Многие ко многим - примеры запросов
Здравствуйте уважаемы форумчане! Пытаюсь организовать мультикатегории для новостей, но пока не...

4
1 / 1 / 1
Регистрация: 28.07.2013
Сообщений: 7
08.04.2015, 17:35 2
На сколько я понимаю, пользователю представляются на выбор названия компетенций и дисциплин. Таким образом надо сделать что-то такое:
SQL
1
2
    
INSERT INTO Комп_Дисципл (ИД_комп, ИД_дисципл) VALUES (SELECT ИД_комп FROM Компетенции WHERE Наименование_комп = $компетенция, SELECT ИД_дисципл FROM Дисциплины WHERE Наименование_дисциплины = $дисциплина);
1
407 / 361 / 141
Регистрация: 09.04.2011
Сообщений: 1,028
08.04.2015, 18:42 3
предыдущий ответ почти правильный, только синтаксис немного другой
MySQL
1
2
INSERT INTO Комп_Дисципл (ИД_комп, ИД_дисципл) 
SELECT * FROM (SELECT ИД_комп FROM Компетенции WHERE Наименование_комп = $компетенция) t1, (SELECT ИД_дисципл FROM Дисциплины WHERE Наименование_дисциплины = $дисциплина) t2;
И зачем вам ИД_стр в последней таблице?
1
9 / 9 / 2
Регистрация: 05.07.2013
Сообщений: 86
08.04.2015, 21:19  [ТС] 4
Цитата Сообщение от retvizan Посмотреть сообщение
предыдущий ответ почти правильный, только синтаксис немного другой
как я понял, это все вполне реализуемо непосредственно в приложении. Можно обойтись без хранимой процедуры?
0
407 / 361 / 141
Регистрация: 09.04.2011
Сообщений: 1,028
08.04.2015, 21:43 5
Да.
1
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
08.04.2015, 21:43
Помогаю со студенческими работами здесь

SQL запрос многие ко многим
Добрый день! Есть таблица студентов (students) и курсов, которые они посещают (courses). Нужно...

Запрос к 2 таблицам многие ко многим
Есть 2 таблицы. tbl_user //таблица с пользователями id // айдишник пользователя ...

Связь многие к одному/ один к многим
Вот не могу понять эти связи, как они действуют. Например у меня есть две таблицы: Автомобиль ...

Выбор при связи многие ко многим
у меня есть три таблицы, опишу их псевдо SQL кодом (если это так можно назвать), просто для общего...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2023, CyberForum.ru