Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 2005.09.18;
Скачать: [xml.tar.bz2];

Вниз

Что надо для выполнения обединения (SQL) с участием MEMO полей?   Найти похожие ветки 

 
angel_b ©   (2005-08-03 18:22) [0]

Есть две машины. Обе одинаковые. На обеих WinXP Pro RUS + Office 2003 + MDAC 2.8.
На одной запрос-объединение с участием MEMO полей выполняется, на другой говорит что "Не возможно выполнить объединение с участием MEMO, OLE и .... полей".
Я не помню что и в какомпорядке ставилось на первую машину (где выполняется). На вторую уже поставил вроде все что только можно, а не выполняется.
Может кто знает? Спасибо заранее.


 
Johnmen ©   (2005-08-04 09:06) [1]

Осталось сказать про СУБД.
И компоненты доступа...


 
sniknik ©   (2005-08-04 10:36) [2]

кусочек из хелпа
Дополнительные сведения
Операцию INNER JOIN можно использовать в любом предложении FROM. Это самые обычные типы связывания. Они объединяют записи двух таблиц, если связующие поля обеих таблиц содержат одинаковые значения.

Операцию INNER JOIN можно использовать с таблицами «Отделы» и «Сотрудники» для отбора всех сотрудников каждого отдела. Для отбора же всех отделов (в том числе тех, в которых нет ни одного сотрудника) или всех сотрудников (в том числе тех, кто не приписан ни к одному отделу) следует использовать операцию LEFT JOIN или RIGHT JOIN, которая создает внешнее объединение.

Попытка объединить поля Memo или объекта OLE приведет к возникновению ошибки.

Допускается объединение любых двух числовых полей подобных типов. Например, поле счетчика можно объединить с полем типа «Длинное целое». Однако нельзя объединить типы полей Single и Double.


странно что хоть в одном случае работает. но возможно обьеденяются не по полям, а по выражениям(вычислении) с участием мемо. (тогда результат char(255))


 
sniknik ©   (2005-08-04 10:46) [3]

> На обеих WinXP Pro RUS + Office 2003 + MDAC 2.8.
Jet в MDAC не входит с с версии 2.6 включительно. т.е. может быть различным раз специально не обновлял, а он указан как используемый движок.


 
angel_b ©   (2005-08-04 11:29) [4]

Я использовал неправильный термин. Не объединение (JOIN), а Слияние (UNION). Не знаю на сколько это меняет суть.
Движок MS Access (Jet).

2Johnmen: Компоненты доступа значения не имеют. Ощибка при выполнении запроса. Хоть из Delphi хоть из Access.

2sniknik: На одной машине работает стабильно и всегда. Я не знал, что Jet не входит в MDAС. Но я не обновлял его вроде и другими средствами.


 
sniknik ©   (2005-08-04 13:24) [5]

> Я использовал неправильный термин. Не объединение (JOIN), а Слияние (UNION).
ошибка
> Не возможно выполнить объединение с участием MEMO, OLE и .... полей"
от join-а
движок тоже термин спутал? ;о))


 
AngeL B.   (2005-08-04 15:29) [6]

2sniknik: Вот запрос
   SELECT SO.Title, S.BaseCost, S.SaleCost, B.Data as TypeTitle
   FROM SaleObject AS SO, Sales AS S, [Справочник] AS B
   WHERE S.ObjectKey = SO.RecKey
     AND S.SaleDate = (SELECT Max(S2.SaleDate) FROM Sales AS S2 WHERE S2.ObjectKey=SO.RecKey)
     AND B.RecKey = SO.ObjectType
     AND S.SaleDate >= :StartDate AND S.SaleDate <= :EndDate

   UNION

   SELECT Title, Cost AS BaseCost, Cost AS SaleCost, "Участки" AS TypeTitle FROM Ground
   WHERE ContractDate >= :StartDate AND ContractDate <= :EndDate AND ObjectKey IS NULL

   UNION

   SELECT Title, Cost AS BaseCost, Cost AS SaleCost, "Участки2" AS TypeTitle FROM Ground
   WHERE ContractDate >= :StartDate AND ContractDate <= :EndDate AND NOT(ObjectKey IS NULL)

   ORDER BY TypeTitle


По отдельности, каждый запрос работает, через UNION нет. Поле Title в таблице Ground - MEMO, в таблице SaleObject - Char(200)
По англ. в ошибке он говорит слово "union".


 
sniknik ©   (2005-08-04 15:58) [7]

> S.ObjectKey = SO.RecKey
...
> AND B.RecKey = SO.ObjectType
...
неявное обьеденение...


 
sniknik ©   (2005-08-04 16:06) [8]

> По англ. в ошибке он говорит слово "union".
а, так ты и ошибку "перевел" !? тогда все сказаное лажа (возможно)... начинай вопрос заново, только исходные данные точно приводи.

+ (тоже возможно)
UNION неявно сортирует результат, а поле принимает тип первого в запросе, т.к. у тебя смешаны типы он возможно пытается отсортировать мемо...
проверь
первое поставь вместо UNION - UNION ALL (нет сортировки, но возможны дубли тогда)
и второе на первое место поставь тот запрос в котором Title - MEMO. (чтобы не пыталось привести его к char(200) что невозможно, а наоборот его к MEMO приводило)


 
Johnmen ©   (2005-08-04 16:12) [9]

>Поле Title в таблице Ground - MEMO, в таблице SaleObject - Char(200)

Вот она и проблема. Типы соответствующих полей запроса должны совпадать !


 
sniknik ©   (2005-08-04 16:21) [10]

> Типы соответствующих полей запроса должны совпадать !
для accecc/jet необязательно, эта "интеллектуальная скотина" ;о)) очень много на себя берет, в том числе и автоприведение типов. беда лиш в том что это "она" делает не всегда.

p.s. скорее всего установка последнего SP jet-а поможет, т.к. это похоже от версии зависит, различия в поведении. но лучше бы привести запрос к виду при котором срабатывает всегда (вернее чаще ;).



Страницы: 1 вся ветка

Форум: "Базы";
Текущий архив: 2005.09.18;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.47 MB
Время: 0.012 c
4-1122322363
Aldaris
2005-07-26 00:12
2005.09.18
Речевой движок Digalo


14-1124905300
Веретенников
2005-08-24 21:41
2005.09.18
Выбор ТВ-тюнера


3-1123143946
Ega23
2005-08-04 12:25
2005.09.18
Разнесение данных по двум таблицам: имеел ли смысл?


3-1123229097
kyn66
2005-08-05 12:04
2005.09.18
Обнулить данные в строке таблицы


14-1124918886
ronyn
2005-08-25 01:28
2005.09.18
Сколько стоит ЧП организовать?





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский