Форум: "Базы";
Поиск по всему сайту: delphimaster.net;
Текущий архив: 2002.04.01;
Скачать: [xml.tar.bz2];




Вниз

SQL Query в связанных таблицах 


YVaschuk   (2002-03-06 13:36) [0]

Ниже представлены два запроса одинаковых по условиям но разных по описанию входных таблиц. Но один работает, т.е. возвращает корректные данные, а второй возвращает пустую таблицу.

Структура базы:
Main
|
Mes--Doplata
|_Uders

Не работающий запрос:
SELECT a.*
FROM Main a
INNER JOIN Mes b
ON (a.ID = b.ID_MAIN)
INNER JOIN Doplata c
ON (b.ID = c.ID_MES)
INNER JOIN Uders d
ON (b.ID = d.ID_MES)
WHERE ( (a.FACULTET = 2) )
ORDER BY a.FAMI, a.KOD

Работающий запрос:
SELECT a.*
FROM Main a
INNER JOIN Mes b
ON (a.ID = b.ID_MAIN)
WHERE ( (a.FACULTET = 2) )
ORDER BY a.FAMI, a.KOD



YVaschuk   (2002-03-06 13:59) [1]

Самое главное - ВОПРОС!!!
Как исправить неработающий запрос так что-бы он возвращал данные работающего запроса?

Ответ типа - удали:
INNER JOIN Doplata c
ON (b.ID = c.ID_MES)
INNER JOIN Uders d
ON (b.ID = d.ID_MES)
не подходит.

Т.к. в дальнейшем будут создаваться запросы с параметрами использующими данные связанных таблиц.



Praco   (2002-03-06 14:32) [2]

В одной из таблиц (Doplata ,Uders ) нет записей, соответствующих предыдущей выборке. Используй внешние объединения.



boogier   (2002-03-07 11:30) [3]

inner -> left outer



YVaschuk   (2002-03-07 13:59) [4]

Спасибо всем за активность. Теперь все Ок.




Форум: "Базы";
Поиск по всему сайту: delphimaster.net;
Текущий архив: 2002.04.01;
Скачать: [xml.tar.bz2];




Наверх





Память: 0.72 MB
Время: 0.016 c
1-91              Yu                    2002-03-21 12:06  2002.04.01  
Что за ошибка?


3-7               Malder                2002-03-05 19:23  2002.04.01  
Как отменить транзакцию в триггере ?


3-67              iPen                  2002-03-05 11:01  2002.04.01  
Программное свешивание в ячейке DBGrid-а


1-146             Mikel13               2002-03-21 07:47  2002.04.01  
Chart


3-54              Malder                2002-03-06 16:58  2002.04.01  
Ошибка при query1.edit;