Russian Qt Forum

Qt => Вопросы новичков => Тема начата: stas3638 от Февраль 03, 2016, 06:17



Название: Отображение данных из реляционной базы данных (один ко многим)
Отправлено: stas3638 от Февраль 03, 2016, 06:17
Хочу сделать отображение в таблице данных из разных таблиц БД, которые имеют связь "один ко многим". Проблем особых не вызывает это, но не хочу, чтобы дублировались данные из первой таблицы (в которой записи "уникальны") из-за второй. Есть ли какая-то возможность сделать отображение более доступным для пользователя? (например, как в MS Access, но не обязательно скрывать записи)


Название: Re: Отображение данных из реляционной базы данных (один ко многим)
Отправлено: chagovets от Февраль 03, 2016, 08:38
Так выполните запрос к данным так, чтобы выполнялись необходимые условия. Зачем это перекладывать на клиента?


Название: Re: Отображение данных из реляционной базы данных (один ко многим)
Отправлено: stas3638 от Февраль 04, 2016, 04:56
Так выполните запрос к данным так, чтобы выполнялись необходимые условия. Зачем это перекладывать на клиента?

Я то могу сделать все с помощью inner join например, но в результате будет дублировать данные в БД из первой таблицы.
Приведу пример: есть 2 таблицы:
Таблица 1
| ID | Column1 | Column2|
| 1  |qwerty     | 123      |
Таблица 2
|ID|Column1|Column2|
|1 | asd      | +++    |
|1 | djs       | ###    |

Выполняя запрос
Код:
select * from table1 inner join table2 on table1.ID = table2.ID;
результатом будет такая таблица:
| table1.ID | table1.Column1 | table1Column2 | table2.ID | table2.Column1 | table2.Column2 |
| 1            |qwerty             | 123                |1             | asd                 | +++               |
| 1            |qwerty             | 123                |1             | djs                  | ###               |
Это не является удовлетворительным результатом для меня, по-этому и создал эту тему.


Название: Re: Отображение данных из реляционной базы данных (один ко многим)
Отправлено: PimenS от Февраль 04, 2016, 05:38
Зачем выбирать все, если нужно только конкретное? Например:

Код:
select t2.ID, t1.Column1, t1.Column2, t2.Column1, t2.Column2  from table1 t1 inner join table2 t2 on t2.ID = t1.ID;


Название: Re: Отображение данных из реляционной базы данных (один ко многим)
Отправлено: stanukih от Февраль 04, 2016, 20:13
Цитировать
Зачем выбирать все, если нужно только конкретное? Например:
Думаю вы не заметили этой части
Цитировать
но в результате будет дублировать данные в БД из первой таблицы.


Название: Re: Отображение данных из реляционной базы данных (один ко многим)
Отправлено: __Heaven__ от Февраль 04, 2016, 22:33
Кажется вам нужно дерево


Название: Re: Отображение данных из реляционной базы данных (один ко многим)
Отправлено: panAlexey от Февраль 05, 2016, 10:37
Кажется вам нужно дерево
Или 2 таблицы. В первой владельцы, во второй "подчиненные".
Это характерная задачка для автоматизации.
Пример:
Контрагенты -> банковские счета.
Фирмы->Подразберения
Товары -> единицы измерения.
Я обычно делаю 2-мя таблицами. Подчиненную показываю только в форме владельца, ибо смысла нет её показывать.
Идея с одной таблицей - тухлая.


Название: Re: Отображение данных из реляционной базы данных (один ко многим)
Отправлено: __Heaven__ от Февраль 05, 2016, 10:50
Предложение от panAlexey реализовать проще


Название: Re: Отображение данных из реляционной базы данных (один ко многим)
Отправлено: stas3638 от Февраль 05, 2016, 15:27
Благодарю за совет, panAlexey, действительно реализую все двумя таблицами.


Название: Re: Отображение данных из реляционной базы данных (один ко многим)
Отправлено: popper от Февраль 05, 2016, 15:57
QColumnView позволяет отображать древовидную модель в нескольких таблицах.