Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Как избавиться от дублирования (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


Наверх

Титульная страница Поиск, карта сайта Написать письмо