Главная страница
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.012 c
3-15479
ruslan_as
2003-01-20 14:25
2003.02.06
IB6 подчиненный IBQuery


3-15480
Наташа
2003-01-20 16:57
2003.02.06
Хранимые процедуры


1-15567
BOA_KAA
2003-01-27 11:00
2003.02.06
Настройки


9-15387
Денис Валерьевич
2002-08-19 22:47
2003.02.06
Слепить два спрайта


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