![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
запрос [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)