![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Как избавиться от дублирования (SQL - full join) [D7, XP]
SveTTT © (2008-09-27 01:52:00)Использую
SELECT Z.A1, Z.B1, P.A1, P.B1 from "PDK1.db" Z FULL JOIN "PDK2.DB" P ON (Z.A1 = P.A1)
Z.A1 и P.A1 - ДАты
подскажите, пожалуйста, как в избавиться от такой ерунды, что если при дате Z.A1 имею 3 значения Z.B1, а при P.A1 - 1 P.B1 , то при совпадении даты в результате на каждую запись Z.B1 дублируется P.B1.
Попробую наглядно:
Z.A1 P.A1 P.A1 P.B1
01.01.2008 100
02.01.2008 500
03.01.2008 200
05.01.2008 300 05.01.2008 800
05.01.2008 100 05.01.2008 800
05.01.2008 200 05.01.2008 800
Выделен дубляж.
Хотя P.A1 - 05.01.2008 имело только одно значение 800
Anatoly Podgoretsky (2008-09-27 21:33:00) [1]Если предыдущее равно текущему, то не отображать.
SveTTT (2008-09-27 21:30:00) [2]
> Такое обычно делают только в отчетах, а там просто.
Это и есть результат для отчета в FR. Но как просто - не пойму. Помогите!
Anatoly Podgoretsky (2008-09-27 21:25:00) [3]> SveTTT (27.09.2008 20:20:06) [6]
OnGetText и дополнительное поле с признаком отображать или нет, но намучаешься и дурость все это. Такое обычно делают только в отчетах, а там просто.
sniknik (2008-09-27 21:09:00) [4]> В чем обман? Здесь все написано ручками.
ни в чем, извини. это я ошибся.
> пытаюсь получить
> ...
не получится, под условие попадает и 2я и 3я запись все честно, составить же такое, чтобы совпадал только первый результат... это вряд ли. если конечно нет еще каких нибудь дополнительных полей, со значениями которые помогут.
SveTTT (2008-09-27 20:23:00) [5]
All.Close;
All.SQL.Clear;
All.SQL.Add('SELECT Z.A1, Z.B1, Z.C1, Z.D1, P.A1, P.B1, P.C1 from "PDK1.db" Z FULL JOIN "PDK2.DB" P ON (Z.A1 = P.A1) ');
All.Open;
SveTTT (2008-09-27 20:20:00) [6]
> кстати первое сравнение не выполняется при данных условиях,
> т.е. первая строка "02.01.2008 500" тут не к месту,
> видать дописана ручками, а не из реального результата.
> зачем ты нас обманываешь? думаешь это поможет в решении
> вопроса? нет все как раз наоборот...
Уважаемый
> sniknik
!
В чем обман? Здесь все написано ручками. Если бы была возможность скрин прикрепить - то... .
Итог попадает в FR. На стороне клиента пробывала Supress. Но результат не точен.
В итоге
> озвучишь желаемое
пытаюсь получить
05.01.2008 300 05.01.2008 800
05.01.2008 100
05.01.2008 200
sniknik (2008-09-27 15:31:00) [7]кстати первое сравнение не выполняется при данных условиях, т.е. первая строка "02.01.2008 500" тут не к месту, видать дописана ручками, а не из реального результата.
зачем ты нас обманываешь? думаешь это поможет в решении вопроса? нет все как раз наоборот...
sniknik (2008-09-27 15:21:00) [8]какие проблемы, разве условие объединения - Z.A1 = P.A1 для какойто из строк выполнилось неправильно?
> как в избавиться от такой ерунды
написать запрос так, чтобы он реально соответствовал тому, что ты хочеш получить. (и не спрашивай как, до тех пор пока не озвучишь желаемое)
Anatoly Podgoretsky (2008-09-27 13:32:00) [9]Дублирование не наблюдается, все строки разные.
Johnmen (2008-09-27 13:11:00) [10]А как работает полное внешнее соединение ты уже разобрался?
SveTTT (2008-09-27 02:01:00) [11]В заголовках ошибка -
Z.A1 Z.B1 P.A1 P.B1