crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )

 
Ответить в данную темуНачать новую тему
> Замена поля в таблице., Заменить поле в таблице, полем из другой таблицы.
bayah
  опции профиля:
сообщение 29.5.2010, 15:23
Сообщение #1


Студент
*

Группа: Участник
Сообщений: 31
Регистрация: 23.11.2009
Пользователь №: 1249

Спасибо сказали: 0 раз(а)




Репутация:   0  


Господа, вот суть проблемы.
Есть две таблицы:


Таблица Специальность, содержащая два поля: Код специальности(ключевое) и Имя специальности.
Таблица План, содержащая так же два поля: Код Плана(ключевое) и Код специальности(ключевое).

Вопрос такой: Как сделать так, чтобы в таблице План, Код специальности заменялся бы соответсвющими значениями Имя специальности из таблицы Специальность.

И еще вопрос, как через QSqlTableModdel на QTableView выводить не всю таблицу. Например, мне ну нежно, чтобы в таблице Специальность отображалось поле Код Специальности а было только Имя Специальности.

Я отображаю так:
QSqlTableModel *spec = new QSqlTableModel;
plan->setTable("PLAN");
plan->select();
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
kibsoft
  опции профиля:
сообщение 29.5.2010, 16:42
Сообщение #2


Участник
**

Группа: Участник
Сообщений: 180
Регистрация: 21.7.2009
Из: Самара
Пользователь №: 928

Спасибо сказали: 14 раз(а)




Репутация:   2  


Цитата
Вопрос такой: Как сделать так, чтобы в таблице План, Код специальности заменялся бы соответсвющими значениями Имя специальности из таблицы Специальность.

Берешь QSqlQueryModel, пишешь запрос типа:
SELECT КодПлана,ИмяСпециальности FROM План,Специальность WHERE План.КодСпециальности=Специальность.КодСпециальности

Убрать 1 столбец можно так:
QSqlTableModel *spec = new QSqlTableModel;
spec->removeColumn(0);


P.S. Читайте документацию, в ней все есть! Документация от Qt - это не MSDN, где можно найти только кукиш.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
Litkevich Yuriy
  опции профиля:
сообщение 29.5.2010, 18:22
Сообщение #3


разработчик РЭА
*******

Группа: Сомодератор
Сообщений: 9656
Регистрация: 9.1.2008
Из: Тюмень
Пользователь №: 64

Спасибо сказали: 807 раз(а)




Репутация:   94  


Цитата(bayah @ 29.5.2010, 19:23) *
Как сделать так, чтобы в таблице План, Код специальности заменялся бы соответсвющими значениями Имя специальности из таблицы Специальность.
изучай асистент:
Модуль QtSql > Модель реляционной таблицы SQL
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
bayah
  опции профиля:
сообщение 31.5.2010, 8:00
Сообщение #4


Студент
*

Группа: Участник
Сообщений: 31
Регистрация: 23.11.2009
Пользователь №: 1249

Спасибо сказали: 0 раз(а)




Репутация:   0  


QSqlQueryModel
Цитата(kibsoft @ 29.5.2010, 17:42) *
Берешь QSqlQueryModel, пишешь запрос типа:
SELECT КодПлана,ИмяСпециальности FROM План,Специальность WHERE План.КодСпециальности=Специальность.КодСпециальности


Да, запрос можно сделать с помощью QSqlQueryModel, вот только как потом с этой выборкой работать через методы QSqlTableModel? Возможно ли вообще?

Или необходимость формировать сложные запросы, используя несколько таблиц приводит к необходимости использовать более низкоуровневые модели. Короче делать мне все это на QSqlQuery остаестя?)
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
MoPDoBoPoT
  опции профиля:
сообщение 31.5.2010, 13:51
Сообщение #5


Участник
**

Группа: Участник
Сообщений: 172
Регистрация: 7.5.2009
Из: Москва
Пользователь №: 738

Спасибо сказали: 44 раз(а)




Репутация:   9  


bayah, во-первых, посмотри что тебе ответил Litkevich Yuriy. Во-вторых, для сложных запросов еще можно использовать представления БД (для обновления данных в представлении оно должно отвечать требованиям обновляемости, но это уже к стандарту SQL и специфики конкретной СУБД).

Сообщение отредактировал MoPDoBoPoT - 31.5.2010, 13:52
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
bayah
  опции профиля:
сообщение 1.6.2010, 12:08
Сообщение #6


Студент
*

Группа: Участник
Сообщений: 31
Регистрация: 23.11.2009
Пользователь №: 1249

Спасибо сказали: 0 раз(а)




Репутация:   0  


Цитата(MoPDoBoPoT @ 31.5.2010, 14:51) *
bayah, во-первых, посмотри что тебе ответил Litkevich Yuriy. Во-вторых, для сложных запросов еще можно использовать представления БД (для обновления данных в представлении оно должно отвечать требованиям обновляемости, но это уже к стандарту SQL и специфики конкретной СУБД).


Пардон, не прочел сообщение Litkevich Yuriy.
Litkevich Yuriy, вам спасибо.

MoPDoBoPoT, я уже как раз сделал используя представления(если мы говорим об одном? представления это то что CREATE VIEW?) и да - через представления не проходит обновление. Поэтому я использовал представление для получения и отображения информации, а обновлял уже непосредственно основные таблицы БД.

Сейчас попробую через Модель реляционной таблицы SQL, может лучше все это будет выглядеть.
Спасибо.
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

Быстрый ответОтветить в данную темуНачать новую тему
Теги
Нет тегов для показа


1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0




RSS Текстовая версия Сейчас: 20.10.2020, 14:17