Leon-Killer22 Posted May 8, 2012 Report Share Posted May 8, 2012 Добрый день, товарищи! Столкнулся со следующей проблемой. Таблица в БД, где хранятся в 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. К сожалению, с помощь экселя я не умею это делать... Quote Link to comment Share on other sites More sharing options...
NatM Posted May 8, 2012 Report Share Posted May 8, 2012 SELECT indeks, oblast, rayon, gorod FROM `indeks`where indeks in (01001, 07400, 08431, 08464, 09421, 10000); Этого должно быть достаточно. Единственно, по-моему, значения должны быть заключены в кавычки... Но если срабатывало без них... Quote Link to comment Share on other sites More sharing options...
Teddy_Bear Posted May 8, 2012 Report Share Posted May 8, 2012 Зачем 29 раз переспрашивать код Киева? Если для заполнения таблицы Эксел для копипаста, то проще вычислить по SQL один раз, а 28 значений "протащить" в Экселе по таблице. Quote Link to comment Share on other sites More sharing options...
Leon-Killer22 Posted May 8, 2012 Author Report Share Posted May 8, 2012 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 (.,.,.,.)) должна равняться кол-ву строк в результате. Quote Link to comment Share on other sites More sharing options...
NatM Posted May 8, 2012 Report Share Posted May 8, 2012 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 Quote Link to comment Share on other sites More sharing options...
Leon-Killer22 Posted May 8, 2012 Author Report Share Posted May 8, 2012 NatM, спасибо за идею с юнионом, однако опять же не совсем то, что нужно. Можно рассматривать, как решение, но... Значений с повторами много (как я писал), в общем повторяющихся значений около полутора тысяч. И для каждого писать отдельно union - это извращение Просто я ищу максимально простое решение этой проблемы... Предполагаю, что должна быть такая функция, но где ее искать... Работал несколько лет назад в чёрно-жёлтой конторе мобильной связи с Oracle SQL. Многое забылось за ненадобностью, но когда-то была похожая ситуация. И как-то я ее решил. НО КАК? :wallbash: Quote Link to comment Share on other sites More sharing options...
NatM Posted May 8, 2012 Report Share Posted May 8, 2012 В принципе, если ничего не получится, можно добавление сделать в цикле. Quote Link to comment Share on other sites More sharing options...
Teddy_Bear Posted May 9, 2012 Report Share Posted May 9, 2012 (edited) Так и не понятно, что надо сделать. Если выбрать из таблицы Эксел из 2347 строк подстроки из четырех полей с несколькими индексами: 01001, 07400, 08431, 08464, 09421, 10000 (в том числе повторяющиеся строки), то непонятен первоначальный запрос. Зачем условие повторять 29 раз? Я бы на VBA сделал, если бы понимал, что надо. Edited May 9, 2012 by Teddy_Bear Quote Link to comment Share on other sites More sharing options...
NatM Posted May 9, 2012 Report Share Posted May 9, 2012 Так и не понятно, что надо сделать. Мне кажется, я поняла: в изначальной таблице нет повторений, а повторения нужны в результирующей таблице... Quote Link to comment Share on other sites More sharing options...
Aleksa106 Posted May 14, 2012 Report Share Posted May 14, 2012 Мне кажется, я поняла: в изначальной таблице нет повторений, а повторения нужны в результирующей таблице... Прочитал топик, не понял что надо автору... Если это то, о чем догадалась NatM, то все решается простым left join Quote Link to comment Share on other sites More sharing options...
NatM Posted May 14, 2012 Report Share Posted May 14, 2012 то все решается простым left join А что соединять, если нет второй таблицы? Quote Link to comment Share on other sites More sharing options...
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.