Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - Работа с данными

Страница: 1 |

 

  Вопрос: DISTINCT в SQL Акцесса? Добавлено: 14.05.03 08:52  

Автор вопроса:  Snake | ICQ: 302130238 

Туплю по конски...

Есть база с повторяющимися данными в поле Х(например)

Надо сделать выборку ВСЕХ полей таблицы, исключая повторения значений поля Х

Например SELECT DISTINCT X FROM Table; делает такую выборку , НО для одного поля!!!

Народ, помогите плизззз, срочняк

Ответить

  Ответы Всего ответов: 10  

Номер ответа: 1
Автор ответа:
 USA



Вопросов: 1
Ответов: 184
 Профиль | | #1 Добавлено: 14.05.03 09:12

Создай запрс мастером, установи условие на какое-нибудь поле, посмотри свойство SQL запроса во время выполнения и все станет ясно. Нет на рабочей машине Access, потому пример дать не могу, проверить не на чем.

Ответить

Номер ответа: 2
Автор ответа:
 Alex&r



Вопросов: 10
Ответов: 105
 Профиль | | #2 Добавлено: 14.05.03 09:46

Можно использовать GROUP BY, только нужно задавать условие на отбор остальных полей.

Ну, к примеру, хотя бы так:

SELECT X, Max(Y) , Min(Z) 
FROM <имя таблицы>
GROUP BY Х;

Ответить

Номер ответа: 3
Автор ответа:
 boevik



Хранитель чата

ICQ: 137392264 

Вопросов: 8
Ответов: 557
 Web-сайт: www.hypertech.ru
 Профиль | | #3
Добавлено: 14.05.03 10:04

Сейчас бъюсь над решением той же задачи.

to Sahsa_LS: это решение не пойдёт.
Потому, что из таблицы:
Х   Y    Z
----------
1   1    1
1   2    3

Результат будет:
1   2   1

а такой строки не существует в таблице.

Ответить

Номер ответа: 4
Автор ответа:
 Snake



ICQ: 302130238 

Вопросов: 16
Ответов: 39
 Профиль | | #4 Добавлено: 14.05.03 10:25

Чувствую что чисто SQL-ем не обойдёцца , придёцца подпрограммить малость...

Поганый Акцесс и его урезаный SQL :-)), извените...

Ответить

Номер ответа: 5
Автор ответа:
 boevik



Хранитель чата

ICQ: 137392264 

Вопросов: 8
Ответов: 557
 Web-сайт: www.hypertech.ru
 Профиль | | #5
Добавлено: 14.05.03 10:32
Мне всё таки нужно решить эту проблему через SQL в SQL Server 7.0

Ответить

Номер ответа: 6
Автор ответа:
 Alex&r



Вопросов: 10
Ответов: 105
 Профиль | | #6 Добавлено: 14.05.03 10:47

to boevik: Ты прав, но ведь автор вопроса и не сказал ничего о прочих полях.

Да и какой смысл выдавать просто случайную строку?

Ответить

Номер ответа: 7
Автор ответа:
 boevik



Хранитель чата

ICQ: 137392264 

Вопросов: 8
Ответов: 557
 Web-сайт: www.hypertech.ru
 Профиль | | #7
Добавлено: 14.05.03 11:32

Дело в том что из вспомогательной таблицы я вставляю данные в главную.
Вспомогательная таблица без PRIMARY и UNIQ и принимает весь набор записей посланный клиенту.
Поле Х он PRIMARY в главной таблице. По каким либо причинам (не подвласным мне) могут прийти несколько записей с одним и тем же key, но отличающими Y и Z.
В главную таблицу, я забрасываю данные при помощи:
INSERT INTO maintable
SELECT DISTINCT * FROM auxtable

и вот здесь возникает ошибка.
Поэтому, хотелось бы select только одной (пусть и случайной) строки из тех у которых поле Х совподает.

Надеюсь, что объяснение понятно и кто-то подскажет идею или направление поиска.

Ответить

Номер ответа: 8
Автор ответа:
 DimaS



Вопросов: 2
Ответов: 85
 Профиль | | #8 Добавлено: 15.05.03 08:55

Если я правильно понял вопрос, то так:

SELECT X, First(Y) , First(Z) 
FROM <имя таблицы>
GROUP BY Х;

Как результат, запрос вернет уникальные значения по полю X и первые встретившиеся по полям Y и Z. Вместо First можно использовать Last, тогда соответственно будут последние встретившиеся.

 

Удачи.

Ответить

Номер ответа: 9
Автор ответа:
 boevik



Хранитель чата

ICQ: 137392264 

Вопросов: 8
Ответов: 557
 Web-сайт: www.hypertech.ru
 Профиль | | #9
Добавлено: 18.05.03 11:12
К сожалению в SQL Server нет команд First и Last.
Есть ли какие либо другие соображения?

Ответить

Номер ответа: 10
Автор ответа:
 Петрович



ICQ: 152308597 

Вопросов: 3
Ответов: 3
 Профиль | | #10 Добавлено: 19.05.03 15:14

SELECT MIN(DISTINCT X) AS Expr1, MIN(DISTINCT Y) AS Expr2, MIN(DISTINCT Z) AS Expr3 FROM table

Ответить

Страница: 1 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам