Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.12.12;
Скачать: CL | DM;

Вниз

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;
Скачать: CL | DM;

Наверх




Память: 0.52 MB
Время: 0.014 c
1-36680
Gimick
2003-12-03 01:01
2003.12.12
Как сделать приложение (не сервис) не видимым в таскменеджере?


3-36536
P0tia
2003-11-20 16:19
2003.12.12
Определение типа таблицы


14-36839
Василиск
2003-11-18 19:22
2003.12.12
Как написать батник на ребут компа?


1-36704
GreySerg
2003-12-02 15:34
2003.12.12
Как сделать hint в закладке (TTabSheet ) , когда наводишь курсор


14-36843
Мазут Береговой
2003-11-19 10:56
2003.12.12
На выходные пошел в парк, в горы погулять.