Перейти к содержанию
СофтФорум - всё о компьютерах и не только

MySQL - выборка с повторами


Рекомендуемые сообщения

Добрый день, товарищи!

Столкнулся со следующей проблемой. Таблица в БД, где хранятся в 4 колонках данные почтовых индексов Украины - Индекс, Область, Район и Город. Все в varchar-е.

Есть запрос:

SELECT all indeks, oblast, rayon, gorod FROM `indeks`where indeks in (01001,01001,01001,01001,01001,01001,01001,01001,01001,01001,01001,01001,01001,01001,01001,01001,01001,01001,01001,01001,01001,01001,01001,01001,01001,01001,01001,01001,01001,07400,08431,08464,09421,10000);

И вот проблема в том, что повторяющиеся значения в результате отображаются как одна строка, как с distinct. Указывал так же и с ALL - результат тот же. У кого какие мысли?

P.S. Данных много (несколько тысяч значений) и необходимо чёткое соответствие строк, чтобы сделать в таблицу экселя "копипаст".

P.P.S. К сожалению, с помощь экселя я не умею это делать...

Ссылка на комментарий
Поделиться на другие сайты

SELECT indeks, oblast, rayon, gorod FROM `indeks`where indeks in (01001, 07400, 08431, 08464, 09421, 10000);

Этого должно быть достаточно.

Единственно, по-моему, значения должны быть заключены в кавычки... Но если срабатывало без них...

Ссылка на комментарий
Поделиться на другие сайты

Зачем 29 раз переспрашивать код Киева?

Если для заполнения таблицы Эксел для копипаста, то проще вычислить по SQL один раз, а 28 значений "протащить" в Экселе по таблице.

Ссылка на комментарий
Поделиться на другие сайты

SELECT indeks, oblast, rayon, gorod FROM `indeks`where indeks in (01001, 07400, 08431, 08464, 09421, 10000);

Этого должно быть достаточно.

Единственно, по-моему, значения должны быть заключены в кавычки... Но если срабатывало без них...

Не совсем то, что нужно - мне как раз НУЖНЫ повторы. А кавычки в данном случае не обязательны.

Зачем 29 раз переспрашивать код Киева?

Если для заполнения таблицы Эксел для копипаста, то проще вычислить по SQL один раз, а 28 значений "протащить" в Экселе по таблице.

Постараюсь объяснить более доходчиво:

В экселе 2347 записи. Столько же разных индесков. Многие повторяются. Нужно вставить в строки значения Обл, Р-н, город в соответствии с индексом.

Уникальных индексов около 1000 штук. Я сойду с ума, если буду выискивать каждый из них и копипастить по 1-5 строк за раз - не могу пока что позволить себе потратить время на такое, т.к. есть ещё куча приоритетных дел.

Итак, вопрос - как же сделать так, чтобы в результатах были даже повторы?

Т.е. количество значение во множестве (index in (.,.,.,.)) должна равняться кол-ву строк в результате.

Ссылка на комментарий
Поделиться на другие сайты

SELECT indeks, oblast, rayon, gorod FROM `indeks`where indeks in (01001, 07400, 08431, 08464, 09421, 10000)union allSELECT indeks, oblast, rayon, gorod FROM `indeks`where indeks in (01001, 07400, 08431, 08464, 09421, 10000)

И столько раз об'единение, сколько копий Вам надо

Если нужна сортировка, добавьте

Order by indeks, oblast, rayon, gorod  
Ссылка на комментарий
Поделиться на другие сайты

NatM, спасибо за идею с юнионом, однако опять же не совсем то, что нужно. Можно рассматривать, как решение, но...

Значений с повторами много (как я писал), в общем повторяющихся значений около полутора тысяч. И для каждого писать отдельно union - это извращение :dntknw:

Просто я ищу максимально простое решение этой проблемы... Предполагаю, что должна быть такая функция, но где ее искать...

Работал несколько лет назад в чёрно-жёлтой конторе мобильной связи с Oracle SQL. Многое забылось за ненадобностью, но когда-то была похожая ситуация. И как-то я ее решил.

НО КАК? :wallbash:

Ссылка на комментарий
Поделиться на другие сайты

В принципе, если ничего не получится, можно добавление сделать в цикле.

Ссылка на комментарий
Поделиться на другие сайты

Так и не понятно, что надо сделать.

Если выбрать из таблицы Эксел из 2347 строк подстроки из четырех полей с несколькими индексами: 01001, 07400, 08431, 08464, 09421, 10000 (в том числе повторяющиеся строки), то непонятен первоначальный запрос. Зачем условие повторять 29 раз?

Я бы на VBA сделал, если бы понимал, что надо.

Изменено пользователем Teddy_Bear
Ссылка на комментарий
Поделиться на другие сайты

Так и не понятно, что надо сделать.

Мне кажется, я поняла: в изначальной таблице нет повторений, а повторения нужны в результирующей таблице...

Ссылка на комментарий
Поделиться на другие сайты

Мне кажется, я поняла: в изначальной таблице нет повторений, а повторения нужны в результирующей таблице...

Прочитал топик, не понял что надо автору...

Если это то, о чем догадалась NatM, то все решается простым left join

Ссылка на комментарий
Поделиться на другие сайты

то все решается простым left join

А что соединять, если нет второй таблицы?

Ссылка на комментарий
Поделиться на другие сайты

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти
  • Последние посетители   0 пользователей онлайн

    • Ни одного зарегистрированного пользователя не просматривает данную страницу
×
×
  • Создать...