| Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате |
| Форум программистов > C/C++: Базы данных > Вывод полей из разных таблиц в одну |
| Автор: Striderr 20.11.2009, 13:40 |
| Всем доброго времени суток. Имеется БД из нескольких таблиц. Также имеется приложение, позволяющее заносить данные в эти таблицы. И требуется в этом приложении к примеру в одном из DBGrid'ов вывести поля из разных таблиц. Каким образом это можно сделать через IBQuery? Для конекта с базой гриды используют IBTable и DataSource соотвественно. |
| Автор: mrbrooks 20.11.2009, 13:58 |
Соответствующим sql-запросом. Здесь стоит уточнить как именно таблицы связаны друг с другом. |
| Автор: Striderr 20.11.2009, 17:20 |
| Уточнить каким образом? Сами таблицы в программе между собой связать? |
| Автор: chip_and_dayl 20.11.2009, 17:50 | ||
Таблицы объединяешь через запрос такого плана:
|
| Автор: Striderr 20.11.2009, 19:07 | ||
| Большое спасибо за запрос! Правда я тут покопался немного и нашел немного другой вариант объединения
|
| Автор: chip_and_dayl 20.11.2009, 22:26 |
| Striderr Я тоже начинал объединение через where :) Но сейчас пользуюсь join |
| Автор: Striderr 21.11.2009, 08:35 |
| Ну да, начинать с where определенно легче=) А какие преимущества у join? Просто в данном случае мне просто надо было вывести в один DBGrid определенные поля из 3-х таблиц. А в случае с join приходилось бы лишние поля скрывать, так как таблицы выводились со всеми полями. Или я еще плохо знаю этот самый join:) |
| Автор: chip_and_dayl 21.11.2009, 10:38 |
| Преимущества в принципе как таково нету, разве что, когда объединяешь больше двух таблиц, то очень сложно будет читаться запрос когда будет куча AND. Это в том случае если ты делаешь внутренне объединение (когда выводятся запись на которую имеется ссылка в первой и второй таблице (если взять за пример объединение двух таблиц)). Но может возникнуть такая ситуация, что тебе нужно с первой таблицы вывести все записи, даже если во второй таблице на них нету ссылки. Если ты использовал обьединение через where, то тебе нужно будет полностью переписать запрос с использованием оператора left|right outer join, в случае с inner join тебе нужно просто заменить inner join на left|right outer join и все заработает:) |
| Автор: Striderr 21.11.2009, 17:48 |
| Вон оно че) Спасибо, буду знать теперь) |