|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » Прочие БД - [решено] SQLite: подтянуть данные из одной табл. в другую даже при отстутствии данных |
|
Прочие БД - [решено] SQLite: подтянуть данные из одной табл. в другую даже при отстутствии данных
|
Старожил Сообщения: 211 |
Доброго времени суток! Пытаюсь подтянуть данные одной таблицы в другую, то есть примерно соединить данные двух таблиц по общему столбцу. Все получилось просто, но результат оказался не тот, что нужен. Таблицы all_pc_result и all_users_result, общий столбец WorkstationName. В результате получилась таблица с пересечениями. Но моя цель, не только пересечения, а именно к all_pc_result подтянуть данные из all_users_result, даже если в all_users_result нет данных. Пример: all_pc_result содержит 11775 записей, а all_users_result содержит 9020 записей, в итоге пересечений получилось 8806. А требуется, чтобы новая таблица содержала 11775 записей и там где данных в таблице all_users_result для этого WorkstationName не нашлось, поля просто остались пустыми. То есть я не хочу терять данные только из-за того, что в другой таблице не нашлось чего присоединить.
Запрос
"CREATE TABLE IF NOT EXISTS all_pc_users AS select Data, Ping, Region, B_S_TT, System_Unit_Name, System_Unit_Manufacturer, System_Unit_Model, Motherboard_SN, Adapter_IPv4, Adapter_Mac, Adapter_Name, Adapter_Type, Adapter_Speed, Monitor_1_model, Monitor_1_SN, Monitor_2_model, Monitor_2_SN, Router_Manufacturer, Router_Model, Router_SN, Processor, DDRx, kolichestvo_Slots_all, kolichestvo_Slots_free, PhysicalMemory_all, Slot_1_size, Slot_1_speed, Slot_1_manufacturer, Slot_2_size, Slot_2_speed, Slot_2_manufacturer, Slot_3_size, Slot_3_speed, Slot_3_manufacturer, Slot_4_size, Slot_4_speed, Slot_4_manufacturer, OS, x64_x86, disk_1_name, disk_1_size, disk_1_type, disk_2_name, disk_2_size, disk_2_type, disk_3_name, disk_3_size, disk_3_type, disk_4_name, disk_4_size, disk_4_type, shk, webcam, Unix_Time, lastLogonTimeStamp, whenChanged, all_logon, user_1, user_1_logon, user_2, user_2_logon, user_3, user_3_logon from all_pc_result join all_users_result on all_pc_result.System_Unit_Name = LOWER(all_users_result.WorkstationName);" |
|
Отправлено: 10:25, 11-10-2021 |
Старожил Сообщения: 211
|
Профиль | Отправить PM | Цитировать Оказалось все банально и я не понял документацию, эта функция left join
|
Отправлено: 20:53, 11-10-2021 | #2 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Старожил Сообщения: 211
|
Профиль | Отправить PM | Цитировать Есть такая же ситуация, но тут не получилось.
Есть таблица AD_list к ней подтягиваю данные из all_pc, общий столбец System_Unit_Name. запрос
На выходе получаю 11700 записей, но AD_list содержала 13800 записей, значит я получил не тот результат. Я подозреваю, что это из-за GROUP BY, но там важные нужные мне условия выборки из таблицы all_pc. Как быть? |
Последний раз редактировалось Griboed0ff, 11-10-2021 в 21:21. Отправлено: 21:13, 11-10-2021 | #3 |
Старожил Сообщения: 211
|
Профиль | Отправить PM | Цитировать удалось только разбить на два запроса и получить нужный результат
Первый: CREATE TABLE IF NOT EXISTS all_pc_result22 AS SELECT * FROM all_pc WHERE Ping <> 'No' GROUP BY System_Unit_Name HAVING max(printf('%s-%s-%s', substr(Data, length(Data) + 1, -4), substr(Data, instr(Data, '.') + 1, 2), substr(Data, 1, 2))); CREATE TABLE IF NOT EXISTS all_pc_result_test AS SELECT * FROM AD_list left join all_pc_result22 on AD_list.System_Unit_Name = all_pc_result22.System_Unit_Name; Разобрался: CREATE TABLE IF NOT EXISTS all_pc_result_test AS SELECT * FROM AD_list left join (SELECT * FROM all_pc WHERE Ping <> 'No' GROUP BY System_Unit_Name HAVING max(printf('%s-%s-%s', substr(Data, length(Data) + 1, -4), substr(Data, instr(Data, '.') + 1, 2), substr(Data, 1, 2)))) AS all_pc_result22 on AD_list.System_Unit_Name = all_pc_result22.System_Unit_Name; |
Отправлено: 21:31, 11-10-2021 | #4 |
![]() |
Участник сейчас на форуме |
![]() |
Участник вне форума |
![]() |
Автор темы |
![]() |
Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
Доступ - Как перенести данные одной учетной записи (настройки браузера Edge) в другую | Alex_On_ | Microsoft Windows 10 | 3 | 16-09-2018 19:28 | |
2010 - Экспорт данных из одной книги excel в другую | Tyamich | Microsoft Office (Word, Excel, Outlook и т.д.) | 5 | 27-10-2016 16:31 | |
2010 - Макрос переноса всех данных из одной рабочей книги в другую | Invincible | Microsoft Office (Word, Excel, Outlook и т.д.) | 4 | 14-06-2013 21:12 | |
Route/Bridge - Маршрутизация из одной подсети в другую. | thomas_aspried@vk | Сетевые технологии | 3 | 06-03-2013 18:45 | |
Использование - Передача лицензий из одной организации в другую | Daemon.XP | Лицензирование продуктов Microsoft | 2 | 09-12-2009 08:41 |
|