Как упорядочить итоговую информацию запроса, вставляя ее в таблицу, оставляя существующие записи таблицы сверху? - PullRequest
1 голос
/ 27 мая 2011

Я пытаюсь вставить значения из таблицы в другую существующую таблицу, и только те значения, которые я вставляю, сортируются в порядке убывания на основе определенного столбца, оставляя существующие записи в верхней части таблицы. Как я могу это сделать? Я пытался использовать оператор Order By, но независимо от того, использую ли я имя столбца таблицы, из которой я получаю данные, или имя столбца таблицы назначения, я получаю сообщение об ошибке. Также это выполняется в VBA с использованием DoCmd.RunSQL.

Вот мой существующий запрос:

ВСТАВИТЬ В AllMetersAvgRSSI
(Долгота, широта, AvgRSSI)
Выбрать Prem.longitude, Prem.latitude, DataByColl. [Avg RSSI]
От [Прем]
Оставил Присоединиться к DataByColl ON (Prem.meter_miu_id = DataByColl. [MIU ID])
Заказать [AvgRSSI] desc

Окончательный результат

Я продолжал возиться с этим и обнаружил, что вы можете использовать порядок, как я показал выше, чтобы делать именно так, как я пытался сделать. Проблема, по-видимому, была вызвана тем, что имена сортируемых столбцов менялись только с Avg RSSI на AvgRSSI. Когда я изменил таблицу назначения на имя поля, совпадающее с исходной таблицей, он упорядочивает входящую информацию, оставляя существующую информацию в покое. Я также провел тест, в котором я изменил имя таблицы назначения на AverageRSSI, и это сработало так же. Таким образом, в конце концов, именно имена полей отличались только пробелом, который вызывал проблему. Последний запрос:

INSERT INTO AllMetersAvgRSSI
(долгота, широта, [Avg RSSI])
Выбрать Prem.longitude, Prem.latitude, DataByColl. [Avg RSSI]
От [Прем]
Оставил Присоединиться к DataByColl ON (Prem.meter_miu_id = DataByColl. [MIU ID])
Заказать [Avg RSSI] desc

Ответы [ 2 ]

2 голосов
/ 27 мая 2011

Порядок в INSERT не имеет смысла с точки зрения базы данных.То, как база данных помещает строки в таблицу, зависит от базовой физической структуры таблицы, а не от того, в каком порядке они вставляются.

Возможно, ваше приложение полагается на столбец с автоинкрементным определением порядка, который будетзатем зависеть от порядка вставки, но если это так, то я бы сказал, что вы допустили ошибку при проектировании базы данных, поскольку не должно быть бизнес-логики, созданной вокруг автоматически увеличивающегося столбца.

Удалите ORDER BY из вашего оператора INSERT и, если вам нужно извлечь строки в определенном порядке позже, используйте ORDER BY там.

0 голосов
/ 27 мая 2011

Создайте временную таблицу, добавьте первый набор результатов в нужном порядке. Вставьте ваши новые значения в таблицу, запросите таблицу, чтобы вернуть новые результаты с заказом в вашу временную таблицу, выберите вашу временную таблицу, результаты будут в том порядке, в котором вы их добавили, если вы не выполните другой заказ.

Не забудьте сбросить временную таблицу после отображения результатов.

...