Прерывает ли объединение таблиц условие Order By в Access Queries? - PullRequest
2 голосов
/ 20 октября 2008

У меня проблема с бесконечным недоумением. Когда я запускаю следующий запрос к базе данных доступа:

SELECT *
FROM PreferredSpacer INNER JOIN SpacerThickness ON  PreferredSpacer.SpacerTypeID = SpacerThickness.SpacerTypeID
ORDER BY PreferredSpacer.UnitTypeID DESC

(поле UnitTypeID имеет тип текста)

Результаты не отсортированы, как ожидал бы нормальный человек. Они повсюду относительно поля UnitTypeID (есть записи, начинающиеся с 'W', между записями, начинающимися с 'C' и 'M'). Если я удаляю объединение и просто пытаюсь упорядочить записи в таблице PreferredSpacer (которая содержит поле UnitTypeID), я получаю ожидаемые результаты, поэтому я должен предположить, что объединение как-то связано с этим.

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

Любая помощь будет принята с благодарностью. Благодаря.

Ответы [ 8 ]

2 голосов
/ 20 октября 2008

Я понял это. Инструмент, который использовался нашим клиентом для создания рассматриваемой БД доступа, неправильно превращал поля varchar в SQL в памятные поля в доступе (вместо текста, как это делают наши инструменты), а памятное поле сортируется неправильно. Мне кажется странным, что Access просто молча согласится с этим и не будет пытаться указать, что сортировка по мемо не будет работать должным образом, но такова жизнь.

Спасибо всем за ответы.

1 голос
/ 20 октября 2008

Это COTR или CzeroTR? В противном случае он выглядит отсортированным по убыванию в соответствии с запросом. YesNo

0 голосов
/ 20 октября 2008

Для Рему: он на О, а не на нуле, но даже если бы он был, там гораздо больше записей во всем месте в полном наборе результатов (я просто вставил часть этого здесь, чтобы проиллюстрировать, все дело в 1000 строк).

К сведению: Sql имеет тип varchar, который будет использоваться для данных этого типа. Однако в Acccess есть только текстовый тип данных, охватывающий как длинные, так и короткие строки. Также работает порядок по Если я выполняю это только для таблицы PreferredSpacer (которая содержит поле UnitTypeID), то только когда я выполняю соединение, оно разваливается.

0 голосов
/ 20 октября 2008

Google говорит:

Вы не можете выполнить ORDER BY для поля текста, текста или изображения (эти поля фактически являются указателями).

Речь идет о MSSQL, но я думаю, что то же самое для Access.

0 голосов
/ 20 октября 2008

Я попытался переписать его, как вы сказали: [РЕДАКТИРОВАТЬ: это был ответ на сообщение, которое было удалено, но содержание по-прежнему действует]

SELECT PreferredSpacer.UnitTypeID
FROM PreferredSpacer, SpacerThickness
WHERE PreferredSpacer.SpacerTypeID = SpacerThickness.SpacerTypeID
ORDER BY PreferredSpacer.UnitTypeID DESC

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

CPATA
CPATA
CFRSA
CFRSA
CFRSA
CFRSA
CFRSA
CFDOT
CFDOT
CFDOT
CFDOT
CFDOT
CFDOAVSL
CFDOAVSL
CFDOAVSL
CFDOAVSL
CFDOAVSL
CFDOA
CFDOA
CFDOA
CFDOA
CFDOA
CFDIAVSL
CFDIAVSL
CFDIAVSL
CFDIAVSL
CFDIAVSL
CFDIA
CFDIA
CFDIA
CFDIA
CFDIA
CFDAT
CFDAT
CFDAT
CFDAT
CFDAT
CBPATA
CBPATA
CBPATA
CBPATA
CBPATA
CBFRSA
CBFRSA
CBFRSA
CBFRSA
CBFRSA
CAPURE
CAPURE
CAPURE
CAPURE
CAPURE
CADGU
CADGU
CADGU
CADGU
CADGU
CADGS
CADGS
CADGS
CADGS
CADGS
COTR
COTR
COTR
COTR

Как видите, результаты, похоже, не соответствуют какому-либо общепринятому порядку.

0 голосов
/ 20 октября 2008

Я не вижу ничего, что могло бы быть не так с этим запросом.

Возможно ли, что размер объединенной таблицы больше, чем доступ готов обработать?

0 голосов
/ 20 октября 2008

К сожалению, поле UnitTypeID существует только в таблице PreferredSpacer.

0 голосов
/ 20 октября 2008

Есть ли у SpacerThickness столбец UnitTypeID? Если это так, «*» в выборе может означать, что он сортируется по PreferredSpacer.UnitTypeID, но выбирает SpacerThickness.UnitTypeID. Попробуйте выбрать PreferredSpacer.UnitTypeID напрямую.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...