Страница: 1 |
Туплю по конски... Есть база с повторяющимися данными в поле Х(например) Надо сделать выборку ВСЕХ полей таблицы, исключая повторения значений поля Х Например SELECT DISTINCT X FROM Table; делает такую выборку , НО для одного поля!!! Народ, помогите плизззз, срочняк
Создай запрс мастером, установи условие на какое-нибудь поле, посмотри свойство SQL запроса во время выполнения и все станет ясно. Нет на рабочей машине Access, потому пример дать не могу, проверить не на чем. Можно использовать GROUP BY, только нужно задавать условие на отбор остальных полей. Ну, к примеру, хотя бы так: SELECT X, Max(Y) , Min(Z) Сейчас бъюсь над решением той же задачи. to Sahsa_LS: это решение не пойдёт. Результат будет: а такой строки не существует в таблице. Чувствую что чисто SQL-ем не обойдёцца , придёцца подпрограммить малость... Поганый Акцесс и его урезаный SQL ), извените... to boevik: Ты прав, но ведь автор вопроса и не сказал ничего о прочих полях. Да и какой смысл выдавать просто случайную строку? Дело в том что из вспомогательной таблицы я вставляю данные в главную. и вот здесь возникает ошибка. Надеюсь, что объяснение понятно и кто-то подскажет идею или направление поиска. Если я правильно понял вопрос, то так: SELECT X, First(Y) , First(Z) Как результат, запрос вернет уникальные значения по полю X и первые встретившиеся по полям Y и Z. Вместо First можно использовать Last, тогда соответственно будут последние встретившиеся. Удачи. SELECT MIN(DISTINCT X) AS Expr1, MIN(DISTINCT Y) AS Expr2, MIN(DISTINCT Z) AS Expr3 FROM table Страница: 1 |
Вопрос: DISTINCT в SQL Акцесса?
Добавлено: 14.05.03 08:52
Автор вопроса: Snake | ICQ: 302130238
Ответы
Всего ответов: 10
Номер ответа: 1
Автор ответа:
USA
Вопросов: 1
Ответов: 184
Профиль | | #1
Добавлено: 14.05.03 09:12
Номер ответа: 2
Автор ответа:
Alex&r
Вопросов: 10
Ответов: 105
Профиль | | #2
Добавлено: 14.05.03 09:46
FROM <имя таблицы>
GROUP BY Х;
Номер ответа: 3
Автор ответа:
boevik
Хранитель чата
ICQ: 137392264
Вопросов: 8
Ответов: 557
Web-сайт:
Профиль | | #3
Добавлено: 14.05.03 10:04
Потому, что из таблицы:
Х Y Z
----------
1 1 1
1 2 3
1 2 1
Номер ответа: 4
Автор ответа:
Snake
ICQ: 302130238
Вопросов: 16
Ответов: 39
Профиль | | #4
Добавлено: 14.05.03 10:25
Номер ответа: 5
Автор ответа:
boevik
Хранитель чата
ICQ: 137392264
Вопросов: 8
Ответов: 557
Web-сайт:
Профиль | | #5
Добавлено: 14.05.03 10:32
Мне всё таки нужно решить эту проблему через SQL в SQL Server 7.0
Номер ответа: 6
Автор ответа:
Alex&r
Вопросов: 10
Ответов: 105
Профиль | | #6
Добавлено: 14.05.03 10:47
Номер ответа: 7
Автор ответа:
boevik
Хранитель чата
ICQ: 137392264
Вопросов: 8
Ответов: 557
Web-сайт:
Профиль | | #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
FROM <имя таблицы>
GROUP BY Х;
Номер ответа: 9
Автор ответа:
boevik
Хранитель чата
ICQ: 137392264
Вопросов: 8
Ответов: 557
Web-сайт:
Профиль | | #9
Добавлено: 18.05.03 11:12
К сожалению в SQL Server нет команд First и Last.
Есть ли какие либо другие соображения?
Номер ответа: 10
Автор ответа:
Петрович
ICQ: 152308597
Вопросов: 3
Ответов: 3
Профиль | | #10
Добавлено: 19.05.03 15:14