13 / 13 / 3
Регистрация: 05.06.2015
Сообщений: 93
|
||||||||||||||||
1 | ||||||||||||||||
Sql запрос к листам excell28.03.2017, 14:59. Показов 7105. Ответов 3
Метки нет (Все метки)
Здравствуйте!
Пытаюсь решить задачу сравнения данных на двух листах эксель(на каждом порядка 150 000 записей). Вцелом задача: найти только записи листа1 которых нет на листе2. Нет на листе2 значит, что нет совпадений 11 из 20 полей записи. Использую sql запрос к листам книги, вот такой примерно(очень его упростил уже пытаясь разобраться, но самостоятельно не вышло)
Кликните здесь для просмотра всего текста
ядро используется ms.jet и все хорошо выполняется, все как мне нужно Однако в результате получаем таблицу с огромной кучей колонок, которые вообщем-то не нужны Однако если я пишу запрос определяя поля для вывода
По работе left join он должен заполнять поля, которые не нашел значениями null, как он это делает если запрашивать все (select * ...), но тут убрав условие вообще я вижу, что в итоговую таблицу просто не вошли те строки, совпадения по которым не найдено, то есть выводится меньше строк чем в начальной таблице... честно, я не понимаю, что за хрень, помогите пожалуйста разобраться.... еще странные вещи вот в чем: select * выдает мои несколько строчек разницы, а select count(*) считает, что результатов запроса 0 Возможно это надо в ветку про sql однако чутье мне подсказывает, что есть какая-то особенность именно в экселе, с sql запросами к которому я относительно недавно познакомился Так же, если есть идеи по альтернативному решению задачи, буду рад! Спасибо!
0
|
28.03.2017, 14:59 | |
Ответы с готовыми решениями:
3
Открытие xls-файла в MS Excell 2000 с кодом MS Excell 2002 Перенос данных из приложения (IDE: Embarcdero Seatle) в MS Excell 2016. Считывание данных из Excell Запрос Select T-sql - Вложенный запрос вернул больше одного значения Как посмотреть T-SQL запрос который генерирует Entity Framework запрос |
26812 / 14491 / 3192
Регистрация: 28.04.2012
Сообщений: 15,782
|
||||||
28.03.2017, 20:03 | 2 | |||||
Попробуйте с подзапросами
0
|
4076 / 1456 / 401
Регистрация: 07.08.2013
Сообщений: 3,629
|
|||||||||||
29.03.2017, 03:26 | 3 | ||||||||||
если условие задачи стоит конкретно
найти только записи листа1 которых нет на листе2 то можно воспользоваться Not In() в условии запроса, предварительно объединив столбцы поиска в одно слово выглядеть будет примерно так
тут вот какая штука
оно должно быть либо Yes либо No (т.е. выглядеть так HDR=Yes или HDR=No) при Yes первая строка содержит названия столбцов при No - нет и если HDR вдруг стало No а вы в запросе указываете имена конкретных столбцов то вполне реально получить тот результат что оказался у вас перед глазами
1
|
13 / 13 / 3
Регистрация: 05.06.2015
Сообщений: 93
|
|
29.03.2017, 10:28 [ТС] | 4 |
так ведь прямо указываю, без вариантов:
да, я рассматривал вариант этот, только оно не правильно работает если появляются значения null. ну и реальный запрос он намного сложнее... вроде бы Join с ms jet работает быстрей... опытным путем установлено, что проблема была в работе cdbl(). это одно из важнейших полей было, но в одной таблице это строка типа 0000123456789 а в другой целое число 123456789. заменил на странную конструкцию типа cstr(t1.номер*1) и заработало(может есть еще варианты?)... на самом деле забавно... но ответ искать не хочется, тк я не знаю способа отладить sql запрос из vba... в целом меня устраивает, обрабатывает мои листы с 150 000 строк, 20 полями по 11 из которых сравнение меньше минуты Дополнительно, если можно, Можете посоветовать где почитать про sql запросы из vba(интересует запуск pl/sql конструкций для бд oracle 11 из vba а так же впринципе возможности работы с книгой эксель как с таблицами бд(ну вот примерно как в вопросе топика)) за ответы Спасибо
0
|
29.03.2017, 10:28 | |
29.03.2017, 10:28 | |
Помогаю со студенческими работами здесь
4
Как в sql запрос вставить еще один запрос правильно? SQL запрос по фрагменту строки сохраненной в таблице SQL SQL запрос, работающий в MS SQL Menegment'e не работает в делфи SQL-запрос в SQL server management studio 2008 (if else) Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |