Форум: "Базы";
Текущий архив: 2003.12.12;
Скачать: [xml.tar.bz2];
ВнизQuery Найти похожие ветки
← →
Pako (2003-11-20 10:04) [0]Есть таблица, в которой помимо других полей хранятся КодФамилии, КодИмени, КодОтчества (они хранятся в surname.db, name.db, fathename.db) - в Гриде (связанном с TQuery) в одном столбце надо вывести ФИО полностью?
← →
Zacho (2003-11-20 10:07) [1]Можно прямо в запросе сформировать такое поле, примерно так : SELECT ..., SURNAME||NAME||FATHERNAME AS FULLNAME
А можно в TQuery создать вычисляемое (Calculated) поле.
← →
Наталия (2003-11-20 10:08) [2]select s.КодФамилии||" "||n.КодИмени||" "f.КодОтчества from surname.db s,name.db n,fathename.db f where ....
Хотя не понятно, зачем хранить это всё в разных таблицах, да ещё и с кодами, почему бы в одну не поместить? И если такая задача (получение полного имени) встречается достаточно часто, то завести ещё одно поле FULL_NAME, куда и записывть полное имя.
← →
Pako (2003-11-20 10:12) [3]
> почему бы в одну не поместить?
меня тоже этот вопрос мучает, но прогу писала не я:))
← →
Zacho (2003-11-20 10:14) [4]
> Наталия © (20.11.03 10:08) [2]
> такая задача (получение полного имени) встречается достаточно
> часто, то завести ещё одно поле FULL_NAME, куда и записывть
> полное имя.
В Парадоксе - лучше не надо. Есть большая вероятность, что FULL_NAME не (всегда) будет равно SURNAME+NAME+FATHERNAME :)
← →
Sergey13 (2003-11-20 10:18) [5]Я конечно понимаю, что Ивановых много, но хранить так, ИМХО, геморой еще тот. Лучше переделать.
← →
Pako (2003-11-20 10:29) [6]
> Я конечно понимаю, что Ивановых много, но хранить так, ИМХО,
> геморой еще тот. Лучше переделать.
Ага, когда в базе 60 таблиц и все друг с другом таким гемороем завязаны, попробуй переделай
← →
Pako (2003-11-20 10:47) [7]А как эту совокупность полей столбцу грида назначить?
← →
Sergey13 (2003-11-20 10:54) [8]2Pako (20.11.03 10:29) [6]
И что, все 60 таблиц используют коды фамилий? Я так думаю вряд ли. Наверняка есть таблица людей, которая так организована. А остальным то это зачем?
Что за приложение, чем занимается?
← →
Pako (2003-11-20 11:10) [9]
> Sergey13 © (20.11.03 10:54) [8]
Конечно не все 60, но проблема в том что база уже наполнена и активно используется.
А как эту совокупность SURNAME||NAME||FATHERNAME AS FULLNAME
полей столбцу грида назначить?
При обращении к свойству FieldName грижда дельфи вешается
← →
Johnmen (2003-11-20 11:12) [10]AS FULLNAME
← →
Pako (2003-11-20 11:14) [11]
> При обращении к свойству FieldName грижда дельфи вешается
!!!!!!!
← →
Sergey13 (2003-11-20 11:20) [12]2Pako (20.11.03 11:10) [9]
Дело конечно твое, но доделка таблицы - это 5 минут. Ну и программу переделать под это - еще час. Смотри сама - тебе жить.
← →
Pako (2003-11-20 11:26) [13]
> AS FULLNAME
?
← →
Johnmen (2003-11-20 11:28) [14]>Pako (20.11.03 11:26)
>?
??
← →
Pako (2003-11-20 11:30) [15]
>
> Johnmen © (20.11.03 11:28) [14]
> >Pako (20.11.03 11:26)
> >?
>
> ??
А в OI нельзя в свойство FieldName FULLNAME записать?
← →
Наталия (2003-11-20 11:30) [16]Pako (20.11.03 11:26) [13]
А как ты делаешь это: "полей столбцу грида назначить"? так и пишешь: AS FULLNAME? :))))
← →
Pako (2003-11-20 11:36) [17]
> А как ты делаешь это: "полей столбцу грида назначить"? так
> и пишешь: AS FULLNAME? :))))
Нет конечно:))Но после того как запрос исправила, патыюсь свойство FieldName хотя бы у первого столбца посмотреть, дельфа на мертов виснет, только снятие задачи помогает.
Запрос следующий:
SELECT S.Number, F.Surname||N.Name||P.Patronymic As FullName FROM Student.DB S, Surname.DB F, Name.DB N, Patronymic.DB P WHERE Number>4600
← →
Zacho (2003-11-20 11:41) [18]
> Pako (20.11.03 11:36) [17]
Скорее всего не виснет, а просто очень долго выполняет такой запрос, т.к. так ты получаешь декартово произведение трех таблиц. Где условия связи таблиц ?
← →
Наталия (2003-11-20 11:42) [19]А где в твоём запросе связь между таблицами, задаваемая в условии where? Ты же декартово произведение всех таблиц написала (о ужас).
← →
Pako (2003-11-20 12:04) [20]SELECT S.Number, F.Surname ||N.Name||P.Patronymic As FullName
FROM Student.DB S LEFT JOIN Surname.DB F , Name.DB N, Patronymic.DB P ON S.KodSurname=F.KodSurName, S.KodName=N.KodName, S.KodPatronymic=P.KodPatronymic WHERE Number>4600
Так можно писать?
← →
Pako (2003-11-20 12:10) [21]Или так
SELECT S.Number, F.Surname ||N.Name||P.Patronymic As FullName
FROM Student.DB S ,Surname.DB F , Name.DB N, Patronymic.DB P WHERE Number>4600, S.KodSurname=F.KodSurName, S.KodName=N.KodName, S.KodPatronymic=P.KodPatronymic
← →
Наталия (2003-11-20 12:17) [22]Книжку какую-нибудь по SQL прочитай, пожалуйста...
← →
Pako (2003-11-20 12:23) [23]
> Книжку какую-нибудь по SQL прочитай, пожалуйста...
Спасибо, вы ооочень добры.
← →
ЮЮ (2003-11-21 04:20) [24]Ну хотя бы в LocalSQL.hlp
(Number > 4600) and (S.KodSurname = F.KodSurName),
Страницы: 1 вся ветка
Форум: "Базы";
Текущий архив: 2003.12.12;
Скачать: [xml.tar.bz2];
Память: 0.49 MB
Время: 0.008 c