Название: заполнение в Qt данными базы из нескольких связанных таблиц Отправлено: samovar7777 от Июнь 06, 2009, 18:32 Добрый вечер всем!! Помогите, пож-та, разобраться в следующем: База данных создана в MySql. База состоит из нескольких связанных таблиц. Есть форма, с которой должны заносится данные в базу(в разные таблицы)
Во всех рассмотренных источниках мне всреч. вставка данных только в одну таблицу: QSqlQuery query; query.prepare("INSERT INTO employee (id, name, salary)" "VALUES (?, ?, ?)"); query.addBindValue(1001); query.addBindValue("Thad Beaumont"); query.addBindValue(65000); query.exec(); Можно ли модифицировать данный программный код для вставки данных в несколько таблиц (связанных между собой)???!!!! Или какие еще существуют пути решения данной задачи. Помогите, пож-та. Заранее Вам спасибо!!! Название: Re: заполнение в Qt данными базы из нескольких связанных таблиц Отправлено: ритт от Июнь 06, 2009, 19:06 следует изменить запрос соответствующим образом - вот и вся модификация кода...
Название: Re: заполнение в Qt данными базы из нескольких связанных таблиц Отправлено: samovar7777 от Июнь 07, 2009, 11:03 следует изменить запрос соответствующим образом - вот и вся модификация кода... Можете подробнее раскрыть фразу "соответствующим образом"???!!!!!!!Буду очень благодарен... Название: Re: заполнение в Qt данными базы из нескольких связанных таблиц Отправлено: lit-uriy от Июнь 07, 2009, 11:32 В SQL, если мне память не изменяет, запрос вставки/обновления может быть адресован только для одной таблицы.
Следовательно, нужно сделать несколько запросов, каждый для своей таблицы Название: Re: заполнение в Qt данными базы из нескольких связанных таблиц Отправлено: samovar7777 от Июнь 07, 2009, 12:44 Действительно, делая отдельными запросами, заполняет отдельные несвязанные таблицы;)......Большое спасибо Вам!!!! Осталось разобраться в заполнении связанных таблиц....
Название: Re: заполнение в Qt данными базы из нескольких связанных таблиц Отправлено: VIMSVEI от Июнь 09, 2009, 21:00 Еще можешь сделать хранимую процедуру на стороне БД, в которую параметрами передаешь данные для вставки в таблицы. В теле этой процедуры пишешь SQL-запросы на разнесение данных по таблицам...
Название: Re: заполнение в Qt данными базы из нескольких связанных таблиц Отправлено: developer от Июнь 10, 2009, 10:27 Если очень много связанных таблиц и нужно вставить сложные данние, я б рекомендовал использовать VIEW. То-есть примерно так:
1. создать view (CREATE VIEW MyFirstView AS SELECT table1.col1, table2.col2, table3.col3 FROM table1, table2, table3); Таким образом мы создаем так сказать новою таблицу MyFirstView которою мы можем полноценно использовать как таблицу. 2. Программно делать инсерт, селект, апдейт одной строчкой из кода. QSqlQuery query; query.prepare("INSERT INTO MyFirstView (col1, col2, col3)" "VALUES (?, ?, ?)"); query.addBindValue(1001); query.addBindValue("Thad Beaumont"); query.addBindValue(65000); query.exec(); Подробнее про виевы читай доку. Название: Re: заполнение в Qt данными базы из нескольких связанных таблиц Отправлено: MoPDoBoPoT от Июнь 10, 2009, 10:59 Если очень много связанных таблиц и нужно вставить сложные данние, я б рекомендовал использовать VIEW. То-есть примерно так: Так можно делать, если представление обновляемо. Чтобы узнать, в каких случаях представление обновляемо, надо читать доку конкретной СУБД.1. создать view (CREATE VIEW MyFirstView AS SELECT table1.col1, table2.col2, table3.col3 FROM table1, table2, table3); Таким образом мы создаем так сказать новою таблицу MyFirstView которою мы можем полноценно использовать как таблицу. 2. Программно делать инсерт, селект, апдейт одной строчкой из кода. QSqlQuery query; query.prepare("INSERT INTO MyFirstView (col1, col2, col3)" "VALUES (?, ?, ?)"); query.addBindValue(1001); query.addBindValue("Thad Beaumont"); query.addBindValue(65000); query.exec(); Подробнее про виевы читай доку. |