Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Вывод полей из разных таблиц в одну, C++ Builder, IBExpert + FireBird 
:(
    Опции темы
Striderr
Дата 20.11.2009, 13:40 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 18
Регистрация: 20.11.2009

Репутация: нет
Всего: нет



Всем доброго времени суток.

Имеется БД из нескольких таблиц. Также имеется приложение, позволяющее заносить данные в эти таблицы. И требуется в этом приложении к примеру в одном из DBGrid'ов вывести поля из разных таблиц.
Каким образом это можно сделать через IBQuery? Для конекта с базой гриды используют IBTable и DataSource соотвественно. 
PM MAIL   Вверх
mrbrooks
Дата 20.11.2009, 13:58 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


трололомен
****


Профиль
Группа: Завсегдатай
Сообщений: 4259
Регистрация: 4.10.2006
Где: Дол Гулдур

Репутация: 7
Всего: 306



Цитата(Striderr @  20.11.2009,  13:40 Найти цитируемый пост)
Каким образом это можно сделать через IBQuery? 

Соответствующим sql-запросом. Здесь стоит уточнить как именно таблицы связаны друг с  другом.
PM MAIL   Вверх
Striderr
Дата 20.11.2009, 17:20 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 18
Регистрация: 20.11.2009

Репутация: нет
Всего: нет



Уточнить каким образом? Сами таблицы в программе между собой связать? 
PM MAIL   Вверх
chip_and_dayl
Дата 20.11.2009, 17:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 603
Регистрация: 22.4.2007
Где: Украина, Киев

Репутация: нет
Всего: 9



Таблицы объединяешь через запрос такого плана:

Код

select * from Таблица1
inner join Таблица2 on Таблица1.Поле_с_помощью_какого_идет_связывание=Таблица2.Поле_с_помощью_какого_идет_связывание



--------------------
Фсё будет хорошо!!!
PM MAIL Skype   Вверх
Striderr
Дата 20.11.2009, 19:07 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 18
Регистрация: 20.11.2009

Репутация: нет
Всего: нет



Большое спасибо за запрос!

Правда я тут покопался немного и нашел немного другой вариант объединения
Код

select таблица_1.требуемая_запись, таблица_2.требуемая_запись
from таблица_1, таблица_2
where таблица_2.внешний_ключ = таблица_1.первичный_ключ
  



Это сообщение отредактировал(а) Striderr - 20.11.2009, 21:19
PM MAIL   Вверх
chip_and_dayl
Дата 20.11.2009, 22:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 603
Регистрация: 22.4.2007
Где: Украина, Киев

Репутация: нет
Всего: 9



Striderr
Я тоже начинал объединение через where :) Но сейчас пользуюсь join


--------------------
Фсё будет хорошо!!!
PM MAIL Skype   Вверх
Striderr
Дата 21.11.2009, 08:35 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 18
Регистрация: 20.11.2009

Репутация: нет
Всего: нет



Ну да, начинать с where определенно легче=) 
А какие преимущества у join? Просто в данном случае мне просто надо было вывести в один DBGrid определенные поля из 3-х таблиц. А в случае с join приходилось бы лишние поля скрывать, так как таблицы выводились со всеми полями. Или я еще плохо знаю этот самый join:)

Это сообщение отредактировал(а) Striderr - 21.11.2009, 08:38
PM MAIL   Вверх
chip_and_dayl
Дата 21.11.2009, 10:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 603
Регистрация: 22.4.2007
Где: Украина, Киев

Репутация: нет
Всего: 9



Преимущества в принципе как таково нету, разве что, когда объединяешь больше двух таблиц, то очень сложно будет читаться запрос когда будет куча AND.  Это в том случае если ты делаешь внутренне объединение (когда выводятся запись на которую имеется ссылка в первой и второй таблице (если взять за пример объединение двух таблиц)).

Но может возникнуть такая ситуация, что тебе нужно с первой таблицы вывести все записи, даже если во второй таблице на них нету ссылки. Если ты использовал обьединение через where,  то  тебе нужно будет полностью переписать запрос с использованием оператора left|right outer join, в случае с inner join тебе нужно просто заменить inner join на left|right outer join и все заработает:)

Это сообщение отредактировал(а) chip_and_dayl - 21.11.2009, 10:39


--------------------
Фсё будет хорошо!!!
PM MAIL Skype   Вверх
Striderr
Дата 21.11.2009, 17:48 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 18
Регистрация: 20.11.2009

Репутация: нет
Всего: нет



Вон оно че) 
Спасибо, буду знать теперь)
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "C++: Базы данных"
chipset

Данный форум предназначен для обсуждения вопросов прямым образом связанных с C++ и БД. Так, вопросы только по C++ следует задавать в C++:Общие вопросы а вопросы по абстрактным БД в Базах данных или в соответствующих под-форумах.

Благодарим за понимание.


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, chipset.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C/C++: Базы данных | Следующая тема »


 




[ Время генерации скрипта: 0.0824 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.