Гость
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Посик дублей / 11 сообщений из 11, страница 1 из 1
13.06.2019, 13:10
    #39826122
Serg197311
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Посик дублей
В таблице vers есть поле codem, в котором попадаются одинаковые значения.
Поле соде - ключевое,счетчик.
Хочу найти все code, где codem повторяются хоть один раз.
Такой запрос виснет нафиг.... минут 10 работал - не сработал....
Что я делаю не так?

Код: sql
1.
2.
3.
4.
5.
6.
7.
SELECT vers.code
FROM vers
WHERE (((vers.codem) In (SELECT DISTINCT vers.codem
FROM vers
GROUP BY vers.codem
HAVING (((Count(vers.codem))>1))
ORDER BY vers.codem;)));
...
Рейтинг: 0 / 0
13.06.2019, 13:17
    #39826130
Akina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Посик дублей
Создайте запрос, который выбирает только vers.codem, встречающиеся более 1 раза. И сделайте это построителем - с SQL у Вас не очень...
Затем на основе таблицы и этого запроса, связав их по codem, выберите vers.code.
Потом, если захочется, можете вручную собрать в один запрос.
...
Рейтинг: 0 / 0
13.06.2019, 13:36
    #39826141
Посик дублей
Для начала, у вас DISTINCT и ";" в конце подчиненного запроса лишние. Возможно будет работать быстрее.
Можно вместо In применить EXISTS, например
Код: plsql
1.
2.
3.
SELECT code FROM vers As T1
WHERE EXISTS (SELECT * FROM vers As T2 WHERE T2.codem = T1.codem And T2.code <> T1.code)
ORDER BY codem;
...
Рейтинг: 0 / 0
13.06.2019, 14:11
    #39826156
vmag
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Посик дублей
чет всех прет на вложенные селекты...
...
Рейтинг: 0 / 0
13.06.2019, 14:23
    #39826162
Serg197311
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Посик дублей
AkinaСоздайте запрос, который выбирает только vers.codem, встречающиеся более 1 раза. И сделайте это построителем - с SQL у Вас не очень...
При всем уважении, Akina, сегодня у Вас что-то со вниманием.....
вложенный запрос делает как раз то что вы написали выше, и делает отлично....(и в конструкторе сделан))

Код: sql
1.
2.
3.
4.
5.
SELECT DISTINCT vers.codem
FROM vers
GROUP BY vers.codem
HAVING (((Count(vers.codem))>1))
ORDER BY vers.codem;




AkinaЗатем на основе таблицы и этого запроса, связав их по codem, выберите vers.code.
Потом, если захочется, можете вручную собрать в один запрос.
А вот это действительно помогло. Спасибо
...
Рейтинг: 0 / 0
13.06.2019, 14:27
    #39826163
Serg197311
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Посик дублей
vmagчет всех прет на вложенные селекты...
А это пожалуй еще лучше..... чеж я про это позабыл-то....
Спасибо дважды!
...
Рейтинг: 0 / 0
13.06.2019, 14:36
    #39826165
Serg197311
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Посик дублей
Кривцов АнатолийДля начала, у вас DISTINCT и ";" в конце подчиненного запроса лишние. Возможно будет работать быстрее.
Можно вместо In применить EXISTS, например
Код: plsql
1.
2.
3.
SELECT code FROM vers As T1
WHERE EXISTS (SELECT * FROM vers As T2 WHERE T2.codem = T1.codem And T2.code <> T1.code)
ORDER BY codem;


Анатолий, спасибо!
Ваш вариант работает ИМХО быстрее всех!
...
Рейтинг: 0 / 0
13.06.2019, 14:56
    #39826173
Akina
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Посик дублей
Serg197311При всем уважении, Akina, сегодня у Вас что-то со вниманием.....
вложенный запрос делает как раз то что вы написали выше, и делает отлично....(и в конструкторе сделан
))Вот и оставили бы его в виде отдельного запроса. Или Вы полагаете, что это МОЁ невнимание протащило в подзапрос точку с запятой, да ещё влепило туда нафиг ненужный, в принципе не имеющий смысла в подзапросе, ORDER BY, и, как следствие, получило в довесок не менее ненужный DISTINCT?
...
Рейтинг: 0 / 0
13.06.2019, 15:11
    #39826185
Serg197311
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Посик дублей
Akina, я полагаю что первая часть вашего ответа была совершенно бесполезной и неинформативной.
А за вторую я вас поблагодарил.
...
Рейтинг: 0 / 0
13.06.2019, 17:19
    #39826273
sdku
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Посик дублей
Akina ...да ещё влепило туда нафиг ненужный, в принципе не имеющий смысла в подзапросе, ORDER BY, и, как следствие, получило в довесок не менее ненужный DISTINCT? абсолютно в десяточку!
...
Рейтинг: 0 / 0
13.06.2019, 17:24
    #39826275
Панург
Участник
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Посик дублей
Код: sql
1.
2.
3.
SELECT DISTINCT T1.code
FROM vers AS T1 INNER JOIN vers AS T2 ON T2.codem = T1.codem
WHERE T2.code <> T1.code;
...
Рейтинг: 0 / 0
Форумы / Microsoft Access [игнор отключен] [закрыт для гостей] / Посик дублей / 11 сообщений из 11, страница 1 из 1
Целевая тема:
Создать новую тему:
Автор:
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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