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

Вниз

Вот фрагмент кода программы   Найти похожие ветки 

 
aOlegY   (2003-01-17 15:03) [0]

Локальная БД Paradox

Вот фрагмент кода программы:
Query.SQL.Clear;
Query.SQL.Add("Select");
Query.SQL.Add(" Lgotn01.N_Potr, Lgotn01.N_Gr_Lgot, Lgots.Percent");
Query.SQL.Add("from");
Query.SQL.Add(" ":work:Lgotn01" lgotn01, Lgots");
Query.SQL.Add("where");
Query.SQL.Add(" Lgots.N_Lgot = Lgotn01.N_Gr_Lgot");
Query.SQL.Add(" and Lgots.Year_ * 12 + Lgots.Month_ = Lgotn01.MonthLgs");
Query.Prepare;
Query.Open;

Вот фрагмент таблицы Lgotn_01:
N_Potr N_Gr_Lgot MonthLgs
----------------------------------
.................
16017 1 24034
16017 6 24034
16017 7 24034
...............
и ещё около 6-ти тысяч записей

Вот фрагмент таблицы Lgots:
N_Lgot Month_ Year Percent
--------------------------------------
.............
1 10 2002 0
6 10 2002 50
7 10 2002 50
..............

После выполнения вышеприведённого кода результирующей таблице
получается только 2 записи с N_Potr=16017
N_Potr N_Gr_Lgot Percent
--------------------------
16017 6 50
16017 6 50
Хотя должно быть 3. ПОЧЕМУ??????? Как сделать, что бы правильно работало?

Если в таблице Lgotn01 оставить только записи с N_Potr = 16017,
то всё работает правильно.


 
MsGuns ©   (2003-01-17 15:35) [1]

Для начала каждое из условий Where возьми в скобки (по типу Паскаля)


 
aOlegY   (2003-01-17 15:54) [2]

Поставил скобки. Всё равно, результат такой же неправильный выдаётся


 
MsGuns ©   (2003-01-17 16:07) [3]

Отладь запрос в SQL Explorer. Что-то странненько. Особенно если учесть:
> Если в таблице Lgotn01 оставить только записи с N_Potr = 16017,
то всё работает правильно.


Можно для верности применить конструкцию JOIN, но все равно непонятно 8-(


 
aOlegY   (2003-01-20 10:47) [4]

В SQL Explorere - Даже если в запрос добавить условие (and N_Potr = 16017), то возращает три записи. Убираю (N_Potr = 16017) - возращает только две строчки с N_Potr = 16017. Может обратиться в службу технической поддержки Borland?

Left outer join работает правильно, но не подходит, потому что медленно.

Мне удалось уйти от проблемы разбив запрос на два запроса и созданием ещё одной временной таблицы:

Query.Sql.Clear;
Query.Sql.Add("Select");
Query.Sql.Add(" N_Lgot, Percent, N_Type_Calc_Lgot, (Year_ * 12 + Month_) as MonthLgs");
Query.Sql.Add("from");
Query.Sql.Add(" Lgots");
Query.Prepare;
Query.Open;
MakePermanent(Query, "work", "Lgots01");

Query.SQL.Clear;
Query.SQL.Add("Select");
Query.SQL.Add(" Lgotn01.N_Potr, Lgots01.N_Lgot, Lgots01.Percent");
Query.SQL.Add("from");
Query.SQL.Add(" ":work:Lgotn01", ":work:Lgots01"");
Query.SQL.Add("where");
Query.SQL.Add(" (Lgots01.N_Lgot = Lgotn01.N_Gr_Lgot)");
Query.SQL.Add(" and Lgots01.MonthLgs = Lgotn01.MonthLgs");

Query.Prepare;
Query.Open;




Страницы: 1 вся ветка

Текущий архив: 2003.02.06;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.02 c
14-15908
Cobalt
2003-01-19 22:17
2003.02.06
Обращаюсь ко взрослым:


3-15447
mate
2003-01-20 11:05
2003.02.06
Сортировка в MSSQL


3-15529
Kudatsky
2003-01-21 11:49
2003.02.06
MS SQL Server и DBF-файлы


1-15698
LongIsland
2003-01-27 16:23
2003.02.06
OnResize и OnDestroy


1-15652
sancho
2003-01-28 21:52
2003.02.06
Гиф формат :(