crossplatform.ru

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

> Снова о QSqlRelationalTableModel, А если нужно взять несколько столбцов из другой таблицы?
mva
  опции профиля:
сообщение 26.6.2009, 15:46
Сообщение #1


Участник
**

Группа: Участник
Сообщений: 104
Регистрация: 15.3.2009
Из: Киров
Пользователь №: 615

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




Репутация:   0  


Все примеры использования QSqlRelationalTableModel сделаны для демонстрации работы с одним столбцом из другой таблицы. Как быть, если мне нужно взять несколько столбцов из другой таблицы?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение
 
Начать новую тему
Ответов
mva
  опции профиля:
сообщение 26.6.2009, 17:48
Сообщение #2


Участник
**

Группа: Участник
Сообщений: 104
Регистрация: 15.3.2009
Из: Киров
Пользователь №: 615

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




Репутация:   0  


Есть конечно вариант использовать не таблицу employee, а ее просмотр, в котором для каждого поля внешней таблицы city сделать свой ключ - копию ключа city. Например так:

CREATE VIEW vw_employee AS
SELECT ID, Name, City AS city_name, City AS city_post_index, City AS city_phone_code , Country
FROM employee


А потом в приложении написать:

model->setTable("vw_employee");
model->setRelation(2, QSqlRelation("city", "id", "name"));
model->setRelation(3, QSqlRelation("city", "id", "post_index"));
model->setRelation(4, QSqlRelation("city", "id", "phone_code"));

Этот вариант прокатит, но не хотелось бы использовать такие "костыли" - некрасиво. И возможность редактирования таблицы employee здесь теряется...



Цитата(SABROG @ 26.6.2009, 18:36) *
Я чего-то не понимаю. В отношении всегда 2 объекта:
- объект, который ссылается
- объект на который ссылаются

Если есть Петя, в поле "адрес" у которого ключ 1. В другой таблице по ключу 1 стоит "Мухосранск, 10, кв.20".
Ключ "1" не может ссылаться сразу на 2 и более объекта. Например "номер пасспорта", "телефонный номер" и "приводы в милицию".

Вернее, теоретически может. Но обычно все PRIMARY ключи - автоинкрементируемые. Если только в одну из перечисленных полей добавится запись, то ключи перестанут совпадать. Это должна быть какая-то синхронность редактирования БД чтоль.


Все правильно, в отношении "один-к-одному" всегда 2 объекта. Но, у каждого из этих объектов может быть несколько атрибутов. Например, у Пети может быть задан день рождения и место рождения, а может еще что-то. Так вот, у проживающего по адресу "Мухосранск, 10, кв.20" я хочу знать ФИО, дату рождения и где он родился. Или мне для каждого атрибута отдельную таблицу заводить? Отдельно таблицу для дат рождения с двумя полями, отдельно таблицу мест рождений тоже с двумя полями. Так что ли?
Перейти в начало страницы
 
Быстрая цитата+Цитировать сообщение

Сообщений в этой теме
- mva   Снова о QSqlRelationalTableModel   26.6.2009, 15:46
- - SABROG   Я активно не работал с этим классом и отказался от...   26.6.2009, 15:57
- - Litkevich Yuriy   mva, а что именно тебе не понятно? У меня в одной ...   26.6.2009, 16:51
- - mva   Возьмем этот пример В нем таблица city имеет 2 по...   26.6.2009, 17:19
- - SABROG   Я чего-то не понимаю. В отношении всегда 2 объекта...   26.6.2009, 17:36
- - mva   Есть конечно вариант использовать не таблицу emplo...   26.6.2009, 17:48
- - Litkevich Yuriy   Цитата(mva @ 26.6.2009, 21:19) Это что, в...   26.6.2009, 17:55
|- - mva   Цитата(Litkevich Yuriy @ 26.6.2009, 18:51...   26.6.2009, 17:55
- - Litkevich Yuriy   mva, по сути ты не понял, что есть реляционная (от...   26.6.2009, 18:04
|- - mva   Цитата(Litkevich Yuriy @ 26.6.2009, 18:58...   26.6.2009, 18:11
- - SABROG   Кажется я понял о чем ты. Если есть таблицы: User...   26.6.2009, 18:06
- - Litkevich Yuriy   Цитата(mva @ 26.6.2009, 22:11) Что означа...   26.6.2009, 18:32
|- - mva   Цитата(Litkevich Yuriy @ 26.6.2009, 19:26...   26.6.2009, 18:36
- - Litkevich Yuriy   Цитата(mva @ 26.6.2009, 22:36) Но там же ...   26.6.2009, 19:55
|- - mva   Цитата(Litkevich Yuriy @ 26.6.2009, 20:55...   27.6.2009, 4:22
- - Litkevich Yuriy   mva, про отдельные столбцы желания не понимаю. Т.к...   27.6.2009, 5:36
- - mva   Цитата(Litkevich Yuriy @ 27.6.2009, 6:36)...   27.6.2009, 19:10


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


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




RSS Текстовая версия Сейчас: 22.12.2024, 6:15