Форум: "Базы";
Текущий архив: 2004.01.20;
Скачать: [xml.tar.bz2];
Вниззапрос Найти похожие ветки
← →
Pako (2003-12-24 10:06) [0]Добрый день! Знаю что запрос составлен неверно, поэтому прошу "не ругать":)))
вобщем все что до второго 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))
← →
Johnmen (2003-12-24 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)
← →
Nikolay M. (2003-12-24 10:30) [2]Насколько я разобрался во всем этом, могу предположить, что достаточно
> (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" получается приджойненной два раза, но тут уже надо смотреть ближе на таблицы, а вообще, что-то мне подсказывает, что таблицы прсто неправильно спроектированы.
← →
Pako (2003-12-24 10:33) [3]
> 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 пусто
← →
Johnmen (2003-12-24 10:37) [4]>Pako (24.12.03 10:33)
Значит условие соединения ни разу не выполнено...:)
Ты бы словами описал, что надо.
← →
Pako (2003-12-24 10:58) [5]Словами:
Главной является таблица заявок "Zayavki.DB" Z,остальные "справочные". Из "Char_Prog.DB" надо взять наименование программы куда направлена заявка(C.Name_Prog), из "Personal.DB" ФИО научного руководителя, из "Status_Prog.DB" статус программы, но загвоздка в том что код этого статуса хранится в "Char_Prog.DB" (конечно можно было хранить не код статуса, а сразу наименование в "Char_Prog.DB" но это не удобно для других таблиц)
← →
Johnmen (2003-12-24 11:03) [6]Тогда приведенный мной запрос верен...:)
И если у заявки нет программы, то нет и статуса.
Или же программа есть, но у ней нет статуса.
← →
Pako (2003-12-24 11:35) [7]Самое интересное что у всех заявок есть программы, и статус указан почти у всех.
← →
Johnmen (2003-12-24 11:48) [8]Тогда, возможно, твоя проблема в S.Name=C.Status
Ты уверен, что это верно ?
← →
Pako (2003-12-24 11:56) [9]
> Тогда, возможно, твоя проблема в S.Name=C.Status
Конечно же неверно S.Name=C.Status так запрос вообще не выполнится т.к. S.Name-это стринг C.Status - целое, надо
S.Kod =C.Status
Если выполнить приведенный тобой запрос но с S.Kod =C.Status получаем пустой столбец S.Name
← →
JibSkeart (2003-12-24 11:58) [10]тогда покажи верные связи с таблицам
← →
Johnmen (2003-12-24 12:00) [11]Это говорит о том, что для записи нет соответствия
Z.Konkurs = C.Kod_Prog
или/иS.Kod =C.Status
← →
Pako (2003-12-24 12:14) [12]Спасибо:))
Страницы: 1 вся ветка
Форум: "Базы";
Текущий архив: 2004.01.20;
Скачать: [xml.tar.bz2];
Память: 0.47 MB
Время: 0.009 c