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

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

фильтрация [D6, Paradox]


Страницы:   1 2 3

Andy Eremin ©   (2003-02-11 10:21:00) 

Мастера!
В результате проверки в SQL-запросе типа:
WHERE [условие1] or [условие2]
все нормально фильтруется, но происходит дубляж записей, т.е. каждая вторая запись - повторная.
Как их убрать?

Код такой:
Query1.SQL.Add("SELECT Materials.Mat_Name as Name,
Models.Mod_Name as Name2, Number, Cost ");
Query1.SQL.Add("FROM Materials, Models, Main");
Query1.SQL.Add("WHERE (Materials.Mat_Number=Number) OR (Models.Mod_CodeNumber=Number) ORDER BY Number");


Соловьев   (2003-02-11 13:18:00) [21]

2 Andy Eremin ©
могу выслать текста.


stone   (2003-02-11 13:04:00) [22]


> После предложенной Вами фильтрации в итоге ничего не остается,
> т.е. ни одной записи

Во-первых это ни фильтрация, а текст запроса. Давайте уж будем точными в терминологии.
Во-вторых, следует учитывать принцип логического построения данных. Возможно вместо INNER JOIN нужно использовать LEFT OUTER JOIN или RIGHT OUTER JOIN. Все зависит от конкретных условий. Проанализировать Ваши данные телепатически я не в состоянии.
В-третьих, это азы SQL. Не поленитесь и почитайте литературу.


chudaks   (2003-02-11 12:39:00) [23]

А если так:

select DISTINCT Materials.Mat_Name as Name,Models.Mod_Name as Name2, Number, Cost FROM Materials, Models, Main WHERE (Materials.Mat_Number=Main.Number) OR (Models.Mod_CodeNumber=Main.Number) ORDER BY Number

;-)



Соловьев   (2003-02-11 12:37:00) [24]

2 Andy Eremin ©
Отестируй свой запрос в SQL Exploere.
Я всегда там тестю, и нахожу то решение которое мне надо.


Andy Eremin   (2003-02-11 12:34:00) [25]

2 stone
После предложенной Вами фильтрации в итоге ничего не остается, т.е. ни одной записи

Query1.SQL.Add("SELECT Materials.Mat_Name as Name, Models.Mod_Name as Name2, Number, Code, Was_Quantity, Quantity ");
Query1.SQL.Add("FROM Main INNER JOIN Materials ON Materials.Mat_Number=Number ");
Query1.SQL.Add("INNER JOIN Models ON Models.Mod_CodeNumber=Number ORDER BY Number");


stone   (2003-02-11 12:17:00) [26]


> "INNER JOIN Models md " - что означает здесь md?

псевдоним таблицы, чтобы не писать везде ее полное имя


Andy Eremin   (2003-02-11 12:16:00) [27]

Reindeer Moss Eater
Да, но с двумя таблицами (Materials, Main) программа справляется мгновенно, выдавая то, что нужно.
А Models - само по себе маленькая.
Логики нет ждать 5 минут для фильтрации


Reindeer Moss Eater   (2003-02-11 12:10:00) [28]

Для декартова произведения 3 таблиц 5 минут - это не время.
:)


Andy Eremin   (2003-02-11 12:07:00) [29]

Сделал так:
Сначала старый запрос, затем DISTINCT.
Все получилось, только время выборки не уменьшилось.
Дело в том, что предыдущий запрос создает записей не N*2, а N*M*K - где N и M и K - число записей таблиц Materials, Models, Main
5 минут для фильтрации - многовато


Соловьев   (2003-02-11 12:06:00) [30]

Покажи те записи(часть), которые ты считаешь одинаковыми.
Может для тебя они визуально одинаковы? А там на самом деле срусская, а там должна быть английская?


Andy Eremin   (2003-02-11 11:53:00) [31]

2 Соловьев
Гы-гы. Чего просил, то и написал:
сунул distinct между SELECT и старым запросом.
Ох, аж смешно стало. Вообщем, на большее я не догадался.


Соловьев   (2003-02-11 11:37:00) [32]

Что написал, т.е. какой запрос?


Andy Eremin   (2003-02-11 11:34:00) [33]

2 Соловьев
Никаких изменений я не обнаружил 8-((


Anatoly Podgoretsky   (2003-02-11 11:34:00) [34]

Andy Eremin © (11.02.03 11:19)
В хелпе есть и подробно, также есть в любой книге про SQL


Соловьев   (2003-02-11 11:24:00) [35]

SELECT DISTINCT ...
Вместо ...твой запрос без SELECT


Andy Eremin   (2003-02-11 11:19:00) [36]

2 Соловьев
SELECT DISTINCT

Простите, но я не знаю, как им пользоваться. В хелпе не нашел...


Соловьев   (2003-02-11 11:16:00) [37]

SELECT DISTINCT


Andy Eremin   (2003-02-11 11:14:00) [38]

2 Reindeer Moss Eater
Также выдает дублированные записи...


Reindeer Moss Eater   (2003-02-11 11:12:00) [39]

Что значит не работает?


Andy Eremin   (2003-02-11 11:12:00) [40]

2 Reindeer Moss Eater
Не работает 8-(


Страницы:   1 2 3

Наверх

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