Гость
Целевая тема:
Создать новую тему:
Автор:
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / запрос unique / 12 сообщений из 12, страница 1 из 1
01.07.2006, 14:43
    #33825738
BMJ
BMJ
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
запрос unique
Здравствуйте!
Подскажите, как можно сделать запрос в таблице выбрав только уникальные записи, аналогично index on name to tag name unique
...
Рейтинг: 0 / 0
01.07.2006, 14:57
    #33825749
Владимир СА
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
запрос unique
BMJПодскажите, как можно сделать запрос в таблице выбрав только уникальные записи, аналогично index on name to tag name unique
Из Help-а
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
SELECT [ALL | DISTINCT] [TOP nExpr [PERCENT]] Select_List_Item [, ...]
   FROM [FORCE] Table_List_Item [, ...]
      [[JoinType] JOIN DatabaseName!]Table [[AS] Local_Alias]
      [ON JoinCondition [AND | OR [JoinCondition | FilterCondition] ...] 
   [WITH (BUFFERING = lExpr)]
   [WHERE JoinCondition | FilterCondition [AND | OR JoinCondition | FilterCondition] ...]
   [GROUP BY Column_List_Item [, ...]] [HAVING FilterCondition [AND | OR ...]]
   [UNION [ALL] SELECTCommand]
   [ORDER BY Order_Item [ASC | DESC] [, ...]]
   [INTO StorageDestination | TO DisplayDestination]
   [PREFERENCE PreferenceName] [NOCONSOLE] [PLAIN] [NOWAIT]
Опция DISTINCT - обрати внимание.
Example 3
The following example displays unique data from a query using the DISTINCT option with a join condition in the WHERE clause. The example displays the Company, Order_Date, and Shipped_On fields for only those records with unique data in the Customer and Orders tables. The SELECT statement specifies local aliases for the tables to distinguish the same field name, Cust_ID, in both tables.
Код: plaintext
1.
2.
3.
4.
5.
6.
CLOSE ALL
CLOSE DATABASES
OPEN DATABASE (HOME( 2 ) + 'Data\TestData')
SELECT DISTINCT TAlias1.company, TAlias2.order_date, ;
   TAlias2.shipped_on ;
   FROM customer TAlias1, orders TAlias2 ;
   WHERE TAlias1.cust_id = TAlias2.cust_id
...
Рейтинг: 0 / 0
01.07.2006, 15:31
    #33825769
BMJ
BMJ
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
запрос unique
Этот DIST работает как мне надо, если в запросе одно поле, если больше он отбирает и по ним и уникальность первого поля теряется.
...
Рейтинг: 0 / 0
01.07.2006, 16:25
    #33825803
StasL
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
запрос unique
Привет BMJ!
Приведи пример своей таблицы и результат который ты хочешь получить. Тогда станет понятнее что ты подразумеваешь под
BMJ только уникальные записи
...
Рейтинг: 0 / 0
01.07.2006, 19:09
    #33825894
Redrik
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
запрос unique
Старая песня...
...
Рейтинг: 0 / 0
02.07.2006, 09:24
    #33826042
Aleksey-K
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
запрос unique
BMJЭтот DIST работает как мне надо, если в запросе одно поле, если больше он отбирает и по ним и уникальность первого поля теряется.
Почитайте HELP по SELECT DISTINCT !!!
Уникальность обеспечивается в пределах ПЕРЕЧИСЛЕННЫХ в SELECT полях!
С уважением, Алексей.
...
Рейтинг: 0 / 0
02.07.2006, 17:54
    #33826231
BMJ
BMJ
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
запрос unique
Здравствуйте.
За совет почитать Хэлп спасибо, но то, что DIST работает с перечисленными полями не даёт ответа на нерешённый мной вопрос.
Структура таблица такова-
q-фамилия (много записсей с повторами из справочника)
q1 -документ
q2-дата документа,
q3.... -в запрос не идут
задача -отобрать уникальный список людей проходивших по этому проекту.
...
Рейтинг: 0 / 0
02.07.2006, 18:22
    #33826242
Владимир СА
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
запрос unique
BMJСтруктура таблица такова-
q-фамилия (много записсей с повторами из справочника)
q1 -документ
q2-дата документа,
q3.... -в запрос не идут
задача -отобрать уникальный список людей проходивших по этому проекту.Под проектом что понимается? Если отобрать уникальный список людей проходивших по этой таблице, то:
Пусть имеется таблица спавочник Spr_Fam (Фамилий Имен Отчеств...)
Код: plaintext
1.
2.
3.
4.
5.
Spr_Fam(
id_fam,; && поле уникальности
First_f,; && фамилия
Second_f,; && Имя
Third_f,;  && Отчество
...)
И ваша таблица:
Код: plaintext
1.
2.
3.
4.
Q_info(
id_inf,; && поле уникальности, если нужно
id_fam,;  && поле связи с таблицей Spr_Fam
data_doc,;  && дата документа
 ....)
Теперь запрос:
Код: plaintext
1.
2.
3.
SELECT DIST F.First_f, F.Second_f, F.Third_f ;
   FROM Spr_Fam F INNER JOIN Q_info Q ;
   ON F.Id_fam = Q.Id_fam ORDER BY  1 , 2 , 3  ;
   INTO CURSOR Q_uniq_fam
Должно получиться.
...
Рейтинг: 0 / 0
02.07.2006, 18:28
    #33826243
Владимир СА
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
запрос unique
Забыл, наверное дату еще надо включить, то:
Код: plaintext
1.
2.
3.
SELECT DIST Q.data_doc, F.First_f, F.Second_f, F.Third_f ;
   FROM Spr_Fam F INNER JOIN Q_info Q ;
   ON F.Id_fam = Q.Id_fam ORDER BY  1 , 2 , 3 , 4  ;
   INTO CURSOR Q_uniq_fam
Дальше можно самому варьировать, что конкретно требуется. Потому, что фраза:
авторзадача -отобрать уникальный список людей проходивших по этому проектуДля меня так и непонятна.
...
Рейтинг: 0 / 0
02.07.2006, 20:06
    #33826262
Redrik
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
запрос unique
BMJаналогично index on name to tag name unique

BMJЭтот DIST работает как мне надо, если в запросе одно поле, если больше он отбирает и по ним и уникальность первого поля теряется.

А то, что в INDEX...UNIQUE полностью теряется смысл оставшихся полей, тебя не смущает?

BMJ...то, что DIST работает с перечисленными полями не даёт ответа на нерешённый мной вопрос.
"А мы всё ставим каверзный ответ
И не находим нужного вопроса..." (с) В.С.Высоцкий


Тебе без разницы, что Иванов (q) может "проходить" по нескольким документам (q1) с разными датами (q2)?
Если "да", то зачем тебе нужны q1 и q2?
Если "нет", то чем тебе не нравится DISTINCT?
...
Рейтинг: 0 / 0
03.07.2006, 14:17
    #33827592
Igor Korolyov
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
запрос unique
Hi BMJ!

Определись что значит "уникальные записи" и всё станет понятно.
Если тебе нужно отобрать "уникальные по полям f1, f2, f3" - при этом
содержимое остальных полей не интересует, то

SELECT f1, f2, f3 FROM MyTable GROUP BY f1, f2, f3

ну или то что тебе советовали с DISTINCT

Если тебе нужно отобрать ВСЕ поля, но уникальными опять таки должны быть
лишь f1, f2, f3 - то добавь в вышеуказанный запрос в список выбора MAX(f4)
f4, MAX(f5) f5 и т.д. - можно и MIN использовать - ничего более разумного
тут не придумаешь - поскольку нет и не может быть никакого разумного
критерия выбора - какое из значений в данной группе предпочесть.

Posted via ActualForum NNTP Server 1.3
...
Рейтинг: 0 / 0
03.07.2006, 19:54
    #33828706
BMJ
BMJ
Гость
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
запрос unique
Спасибо за ответы, буду пробовать.
В качестве коментария- проектом я назвал выполняемую в конторе часть работы, а выборка для выявления тех, кто был задействован хоть раз потому и поле дата документа. Более детальный анализ по необходимости.
...
Рейтинг: 0 / 0
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / запрос unique / 12 сообщений из 12, страница 1 из 1
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]