Jump to content
СофтФорум - всё о компьютерах и не только

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


Recommended Posts

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

Столкнулся со следующей проблемой. Таблица в БД, где хранятся в 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. К сожалению, с помощь экселя я не умею это делать...

Link to comment
Share on other sites

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

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

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

Link to comment
Share on other sites

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

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

Link to comment
Share on other sites

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 (.,.,.,.)) должна равняться кол-ву строк в результате.

Link to comment
Share on other sites

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  
Link to comment
Share on other sites

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

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

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

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

НО КАК? :wallbash:

Link to comment
Share on other sites

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

Link to comment
Share on other sites

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

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

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

Edited by Teddy_Bear
Link to comment
Share on other sites

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

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

Link to comment
Share on other sites

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

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

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

Link to comment
Share on other sites

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

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

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

 Share

  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...