Leon-Killer22 Опубликовано 8 мая, 2012 Жалоба Поделиться Опубликовано 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. К сожалению, с помощь экселя я не умею это делать... Ссылка на комментарий Поделиться на другие сайты Поделиться
NatM Опубликовано 8 мая, 2012 Жалоба Поделиться Опубликовано 8 мая, 2012 SELECT indeks, oblast, rayon, gorod FROM `indeks`where indeks in (01001, 07400, 08431, 08464, 09421, 10000); Этого должно быть достаточно. Единственно, по-моему, значения должны быть заключены в кавычки... Но если срабатывало без них... Ссылка на комментарий Поделиться на другие сайты Поделиться
Teddy_Bear Опубликовано 8 мая, 2012 Жалоба Поделиться Опубликовано 8 мая, 2012 Зачем 29 раз переспрашивать код Киева? Если для заполнения таблицы Эксел для копипаста, то проще вычислить по SQL один раз, а 28 значений "протащить" в Экселе по таблице. Ссылка на комментарий Поделиться на другие сайты Поделиться
Leon-Killer22 Опубликовано 8 мая, 2012 Автор Жалоба Поделиться Опубликовано 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 (.,.,.,.)) должна равняться кол-ву строк в результате. Ссылка на комментарий Поделиться на другие сайты Поделиться
NatM Опубликовано 8 мая, 2012 Жалоба Поделиться Опубликовано 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 Ссылка на комментарий Поделиться на другие сайты Поделиться
Leon-Killer22 Опубликовано 8 мая, 2012 Автор Жалоба Поделиться Опубликовано 8 мая, 2012 NatM, спасибо за идею с юнионом, однако опять же не совсем то, что нужно. Можно рассматривать, как решение, но... Значений с повторами много (как я писал), в общем повторяющихся значений около полутора тысяч. И для каждого писать отдельно union - это извращение Просто я ищу максимально простое решение этой проблемы... Предполагаю, что должна быть такая функция, но где ее искать... Работал несколько лет назад в чёрно-жёлтой конторе мобильной связи с Oracle SQL. Многое забылось за ненадобностью, но когда-то была похожая ситуация. И как-то я ее решил. НО КАК? :wallbash: Ссылка на комментарий Поделиться на другие сайты Поделиться
NatM Опубликовано 8 мая, 2012 Жалоба Поделиться Опубликовано 8 мая, 2012 В принципе, если ничего не получится, можно добавление сделать в цикле. Ссылка на комментарий Поделиться на другие сайты Поделиться
Teddy_Bear Опубликовано 9 мая, 2012 Жалоба Поделиться Опубликовано 9 мая, 2012 (изменено) Так и не понятно, что надо сделать. Если выбрать из таблицы Эксел из 2347 строк подстроки из четырех полей с несколькими индексами: 01001, 07400, 08431, 08464, 09421, 10000 (в том числе повторяющиеся строки), то непонятен первоначальный запрос. Зачем условие повторять 29 раз? Я бы на VBA сделал, если бы понимал, что надо. Изменено 9 мая, 2012 пользователем Teddy_Bear Ссылка на комментарий Поделиться на другие сайты Поделиться
NatM Опубликовано 9 мая, 2012 Жалоба Поделиться Опубликовано 9 мая, 2012 Так и не понятно, что надо сделать. Мне кажется, я поняла: в изначальной таблице нет повторений, а повторения нужны в результирующей таблице... Ссылка на комментарий Поделиться на другие сайты Поделиться
Aleksa106 Опубликовано 14 мая, 2012 Жалоба Поделиться Опубликовано 14 мая, 2012 Мне кажется, я поняла: в изначальной таблице нет повторений, а повторения нужны в результирующей таблице... Прочитал топик, не понял что надо автору... Если это то, о чем догадалась NatM, то все решается простым left join Ссылка на комментарий Поделиться на другие сайты Поделиться
NatM Опубликовано 14 мая, 2012 Жалоба Поделиться Опубликовано 14 мая, 2012 то все решается простым left join А что соединять, если нет второй таблицы? Ссылка на комментарий Поделиться на другие сайты Поделиться
Рекомендуемые сообщения
Для публикации сообщений создайте учётную запись или авторизуйтесь
Вы должны быть пользователем, чтобы оставить комментарий
Создать учетную запись
Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!
Регистрация нового пользователяВойти
Уже есть аккаунт? Войти в систему.
Войти