|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
08.02.2018, 21:13 | #1 |
Пользователь
Регистрация: 17.04.2015
Сообщений: 27
|
Помогите составить SQL (ADO, Access) запрос для сравнения двух таблиц.
Помогите составить SQL (ADO, Access) запрос для сравнения двух таблиц.
Есть две таблицы. Main и Old. Поля в них одинаковые. http://programmersforum.ru/attachmen...1&d=1518113141 http://programmersforum.ru/attachmen...1&d=1518113206 Нужно выбрать из таблицы Old category, model, color чтобы соответсвовали полям category, model, но отличались полем color относительно таблицы Main... Результат должен быть такой. http://programmersforum.ru/attachmen...1&d=1518113223 Спасибо. Последний раз редактировалось yorri; 08.02.2018 в 21:25. Причина: Ошибка |
08.02.2018, 23:01 | #2 |
Пользователь
Регистрация: 17.04.2015
Сообщений: 27
|
Сделалось так. Не знаю, соответствует ли SQL-феншую, но как будто работает.
SELECT category, model, color FROM old WHERE old.color NOT IN (SELECT color FROM main WHERE old.category=main.category and old.model=main.model) and old.category IN (SELECT category FROM main WHERE old.model=main.model) and old.model IN (SELECT model FROM main WHERE old.category=main.category) group by category, model, color Возможно есть более изящные варианты, но я их не нашел. |
09.02.2018, 09:45 | #3 |
Старожил
Регистрация: 20.04.2008
Сообщений: 5,526
|
Код:
программа — запись алгоритма на языке понятном транслятору
Последний раз редактировалось evg_m; 09.02.2018 в 09:49. |
09.02.2018, 12:52 | #4 |
Пользователь
Регистрация: 17.04.2015
Сообщений: 27
|
Спасибо! Вечером попробую. Я бы такого не "вывернул" :-).
Я пробовал через join, но мои познания в SQL не так глубоки как Ваши. |
09.02.2018, 17:23 | #5 | |
Пользователь
Регистрация: 17.04.2015
Сообщений: 27
|
Цитата:
Код:
Пишет Синтаксическая ошибка (отсутсвует оператор)... и выделяет (я тестирую через Access) кусочер подчеркнутый в коде Последний раз редактировалось yorri; 09.02.2018 в 19:47. |
|
09.02.2018, 20:21 | #6 |
Программист
Участник клуба
Регистрация: 23.06.2009
Сообщений: 1,772
|
Я бы взял в скобки:
Код:
|
09.02.2018, 20:46 | #7 |
Пользователь
Регистрация: 17.04.2015
Сообщений: 27
|
если в скобки, тогда Синтаксическая ошибка (отсутствует оператор) в выражении " (notmain.category = grp.category and notmain.model = grp.model) left join main on notmain.category =main.categоry and notmain.model =main.model and notmain.a_color =main.a_color where main.a_color is null"
|
09.02.2018, 20:48 | #8 |
Старожил
Регистрация: 17.11.2010
Сообщений: 18,922
|
А так
Код:
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
|
09.02.2018, 20:50 | #9 |
Пользователь
Регистрация: 17.04.2015
Сообщений: 27
|
В принципе, технически меня устраивает мой вариант, но хотелось бы все таки попробовать способ от evg_m, так как есть подозрение, что его способ будет работать быстрее (что то мне так кажется).
Мой запрос "думает" около 20-25 секун. База Main около 6000 записей, Old - 3500. |
09.02.2018, 20:55 | #10 | |
Пользователь
Регистрация: 17.04.2015
Сообщений: 27
|
Цитата:
|
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Запрос из двух таблиц | SERG1980 | БД в Delphi | 8 | 18.11.2010 23:05 |
Запрос на сравнение записей двух таблиц. | papos | SQL, базы данных | 0 | 25.09.2010 12:31 |
Запрос из двух таблиц | T@tali | Microsoft Office Access | 0 | 18.05.2010 21:32 |
sql запрос на выборку записей из двух связанных таблиц | Люсьен | БД в Delphi | 9 | 20.04.2009 16:07 |
SQL запрос из двух таблиц.(сложный) | Miha87 | БД в Delphi | 5 | 10.11.2008 11:04 |