Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

запрос [D7, Paradox]


Pako ©   (2003-12-24 10:06:00) 

Добрый день! Знаю что запрос составлен неверно, поэтому прошу "не ругать":)))
вобщем все что до второго SELECТ работает корректно, но мне необходимо получить еще и наименование статуса из четвертой таблички
SELECT Z.Razdel, Z.Project, ( ( (P.FAM || " ") || P.Nam) || " ") || P.Par FullName, C.Name_Prog
FROM "Zayavki.DB" Z
LEFT OUTER JOIN "Char_Prog.DB" C
ON (Z.Konkurs = C.Kod_Prog)
LEFT OUTER JOIN "Personal.DB" P
ON (Z.Rukovod = P.Number)
(SELECT S.Name FROM "Status_Prog.DB" S
LEFT OUTER JOIN "Char_Prog.DB" C ON (S.Name=C.Status))


Pako   (2003-12-24 12:14:00) [1]

Спасибо:))


Johnmen   (2003-12-24 12:00:00) [2]

Это говорит о том, что для записи нет соответствия
Z.Konkurs = C.Kod_Progили/и S.Kod =C.Status


JibSkeart   (2003-12-24 11:58:00) [3]

тогда покажи верные связи с таблицам


Pako   (2003-12-24 11:56:00) [4]


> Тогда, возможно, твоя проблема в S.Name=C.Status

Конечно же неверно S.Name=C.Status так запрос вообще не выполнится т.к. S.Name-это стринг C.Status - целое, надо
S.Kod =C.Status
Если выполнить приведенный тобой запрос но с S.Kod =C.Status получаем пустой столбец S.Name


Johnmen   (2003-12-24 11:48:00) [5]

Тогда, возможно, твоя проблема в S.Name=C.Status
Ты уверен, что это верно ?


Pako   (2003-12-24 11:35:00) [6]

Самое интересное что у всех заявок есть программы, и статус указан почти у всех.


Johnmen   (2003-12-24 11:03:00) [7]

Тогда приведенный мной запрос верен...:)
И если у заявки нет программы, то нет и статуса.
Или же программа есть, но у ней нет статуса.


Pako   (2003-12-24 10:58:00) [8]

Словами:
Главной является таблица заявок "Zayavki.DB" Z,остальные "справочные". Из "Char_Prog.DB" надо взять наименование программы куда направлена заявка(C.Name_Prog), из "Personal.DB" ФИО научного руководителя, из "Status_Prog.DB" статус программы, но загвоздка в том что код этого статуса хранится в "Char_Prog.DB" (конечно можно было хранить не код статуса, а сразу наименование в "Char_Prog.DB" но это не удобно для других таблиц)


Johnmen   (2003-12-24 10:37:00) [9]

>Pako (24.12.03 10:33)

Значит условие соединения ни разу не выполнено...:)

Ты бы словами описал, что надо.


Pako   (2003-12-24 10:33:00) [10]


> Johnmen © (24.12.03 10:26) [1]
> SELECT Z.Razdel, Z.Project, ( ( (P.FAM || " ") || P.Nam)
> || " ") || P.Par FullName, C.Name_Prog, S.Name
> FROM "Zayavki.DB" Z
> LEFT JOIN "Char_Prog.DB" C ON (Z.Konkurs = C.Kod_Prog)
>
> LEFT JOIN "Personal.DB" P ON (Z.Rukovod = P.Number)
> LEFT JOIN "Status_Prog.DB" S ON (S.Name=C.Status)

в этом случае S.Name пусто


Nikolay M.   (2003-12-24 10:30:00) [11]

Насколько я разобрался во всем этом, могу предположить, что достаточно

> (SELECT S.Name FROM "Status_Prog.DB" S
> LEFT OUTER JOIN "Char_Prog.DB" C ON (S.Name=C.Status))

перенести в список полей после

> C.Name_Prog

Правда, "Char_Prog.DB" получается приджойненной два раза, но тут уже надо смотреть ближе на таблицы, а вообще, что-то мне подсказывает, что таблицы прсто неправильно спроектированы.


Johnmen   (2003-12-24 10:26:00) [12]

SELECT Z.Razdel, Z.Project, ( ( (P.FAM || " ") || P.Nam) || " ") || P.Par FullName, C.Name_Prog, S.Name
FROM "Zayavki.DB" Z
LEFT JOIN "Char_Prog.DB" C ON (Z.Konkurs = C.Kod_Prog)
LEFT JOIN "Personal.DB" P ON (Z.Rukovod = P.Number)
LEFT JOIN "Status_Prog.DB" S ON (S.Name=C.Status)


Наверх

Титульная страница Поиск, карта сайта Написать письмо