Форум: "Базы";
Текущий архив: 2004.04.25;
Скачать: [xml.tar.bz2];
ВнизКак добавить поле в Dataset на этапе выполнения Найти похожие ветки
← →
Anna (2004-03-25 15:04) [0]В базе есть поле number,а я в DBgride хочу вывести его
словом (словесные описания лежат в другой таблице).
Т.е. сделать fkcalculated field по ходу действия.
Неудобство в том, что заранее неизвестно, захочет его пользователь увидеть или нет и какие вообще поля он захочет увидеть. На форме много checkboxов и всяких других условий. Sql-запрос клеится в процессе выполнения.
← →
Sergey13 © (2004-03-25 15:11) [1]2Anna (25.03.04 15:04)
Ну дык если
>Sql-запрос клеится в процессе выполнения
то и приклеить еще одну мульку.
← →
Johnmen © (2004-03-25 15:12) [2]1. Самое правильное - написать запрос с соединением необходимых таблиц.
2. Не самое(ибо тормознутое) - использовать лукапные поля.
← →
Anna (2004-03-25 15:16) [3]Если бы оно было одно - это еще туда-сюда, тут запрос склеить из двух таблиц не проблема. Но их таких ТРИ штуки, соотв-но, если их всех кому-то понадобится увидеть - выборка из 4 таблиц, а склеить такой запрос - проще удавиться сразу.
← →
bushmen © (2004-03-25 15:21) [4]>склеить такой запрос - проще удавиться сразу.
А о чем Вы думали, когда начинали программировать? Четыре таблицы - это еще баловство!
← →
Ega23 © (2004-03-25 15:26) [5]и по 15 таблиц бывает...
← →
Anna (2004-03-25 15:30) [6]2bushmen
>А о чем Вы думали, когда начинали программировать?
Да все больше о божественном...
А впрочем, ладно, склеим и из 4...
← →
Johnmen © (2004-03-25 15:35) [7]>Anna (25.03.04 15:16) [3]
Не запрос склеивать, запрос с соединением !
Ничего там сложного нет. Я и по 10-15 соединял и справедливо не боялся :)
← →
Sergey13 © (2004-03-25 15:36) [8]2Anna
Можно не клеить вообще. Выдавайте в запросе все, а показывайте, что попросят. Может и дубовенько, но просто... 8-)
← →
Anna (2004-03-25 15:45) [9]2Sergey13
>Выдавайте в запросе все, а показывайте, что попросят...
Не получится, к сожалению. Там по запрошенным полям идет суммирование(count(...)+ group by в запросе),т.е. смотрится статистика в разных разрезах.
2Johnmen
Чуть подробнее, пожалуйста. Или кусок кода. Я просто с этим первый раз сталкиваюсь, поэтому и задаю дурацкие вопросы.Чем отличается запрос просто от запроса с соединением?
← →
Johnmen © (2004-03-25 15:48) [10]>Anna
Найти описание SQL в инете несложно. Наверное...:)
← →
Alex_Bredin © (2004-03-25 15:51) [11]LocalSQL.hlp(хотя неясно какая СУБД)
Конструкции JOIN
← →
Anna (2004-03-25 15:52) [12]СУБД - Oracle.
Имеенся в виду "UNION ALL"?
← →
Alex_Bredin © (2004-03-25 15:55) [13]Johnmen и Sergey13 уже сказали все что нужно, соединяйте таблицы JOIN-ом, а показывать или нет поле - используйте св-во Visible у DBGrid.Column
← →
Sergey13 © (2004-03-25 15:57) [14]2Anna (25.03.04 15:45) [9]
А "разрезов" много? Ограниченное количество или произвольное? На трех таблицах много разрезов вряд ли получится. Может еще проще поступить. Разрез - свой запрос. И с оптимизацией легче справляться, и ораклу так больше, ИМХО, по душе.
← →
Anna (2004-03-25 16:04) [15]Разрезов много, но это как раз не страшно. Там с индексами все в порядке и цифры лежат все в этой же таблице. А слазить в другую таблицу надо как раз за именами трех их этих "разрезов".
т.е. я должна выдать не
1 50шт
3 70шт
4 0шт...
а
в работе 50
заблокировано 70
отключено 0
← →
bushmen © (2004-03-25 16:06) [16]Так это самая элементарная выборка
← →
Sergey13 © (2004-03-25 16:10) [17]2Anna
А если сделать вьюшку на объединение, и аналитику брать с нее, а не с таблицы?
← →
Anna (2004-03-25 16:13) [18]О! Спасибо! Пожалуй, так я и сделаю! :-)
← →
bushmen © (2004-03-25 16:14) [19]А что, разве при генерации вьюхи запрос составлять не надо ?
← →
Anna (2004-03-25 16:16) [20]Надо. Только туда можно сразу выбрать названия нужных параметров, а не их id number(2). Это же элементарное действие.
← →
bushmen © (2004-03-25 16:32) [21]>можно сразу выбрать названия нужных параметров, а не их id number(2).
Все-равно надо в условиях выборки использовать эти id
← →
Anna (2004-03-25 16:40) [22]Надо. Но вьюшник делается не на этапе работы приложения, а заранее ручками. Один раз и на всю оставшуюся жизнь.
← →
Anna (2004-03-25 16:43) [23]И потом для выборки из вьюшника уже не ID, а именно текст используется
← →
bushmen © (2004-03-25 16:47) [24]>Один раз и на всю оставшуюся жизнь.
В коде тоже вбивается один раз и на всю жизнь!
>И потом для выборки из вьюшника уже не ID, а именно текст используется
А про конструкцию select * from слышали? А потом по именам полей берите свое текстовое поле!
← →
Petr V. Abramov © (2004-03-25 18:50) [25]> Anna
Таблица, в которой "словесные описания", я так понимаю, небольшая? Если да, тогда:
пользователь увидеть не захотел -и у поля то_самое_поле_number visible = false
( select что-то,
то_самое_поле_number
from три_таблицы
)
а захотел -
select
q.*,
словесное_описание
from
( select что-то,
то_самое_поле_number
from три_таблицы
) q, таблица_словесных_описаний op
where q.то_самое_поле_number = op.то_самое_поле_number
Ну где-то еще group by добавятся, но идею, думаю, поняли
Минимум добавлений, максимум performance`а :)
Страницы: 1 вся ветка
Форум: "Базы";
Текущий архив: 2004.04.25;
Скачать: [xml.tar.bz2];
Память: 0.5 MB
Время: 0.039 c