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




Вниз

Запрос SQL 


saf   (2002-04-03 10:46) [0]

Хочу объединить таблицы для статистики.
Делаю так:
select Nametovar, NoNaklad, Kolvo, Zena
from rashod
union all
select Nametovar, Nnaklad, Kolvo, Zena
from prihod
Выдаёт ошибку "Type Mismatch in expression"
Пробую по другому:
CREATE VIEW prihod_stat (Nametovar, NoNaklad, Kolvo, Zena)
AS SELECT prihod.Nametovar, NoNaklad, Kolvo, Zena
From prihod,rashod
Выдаёт ошибку "Capabiliti not Supported"
Поьогите разобраться, пожалуйста!!!!



Johnmen   (2002-04-03 11:35) [1]

1. ...union all... Что за загадочное слово all ?
2. Не указано правило объединения таблиц...

Подучи SQL (без обид..) ;o)



Desdechados   (2002-04-03 11:39) [2]

VIEW поддерживается только SQL-серверами, к которым Paradox не относится.
А в первом варианте попробуй сделать явное преобразование типов CAST() для каждого поля в обоих частях SELECT



Desdechados   (2002-04-03 11:42) [3]

2 Johnmen ©
Подучи SQL (без обид..) - по поводу all



saf   (2002-04-03 12:39) [4]

Обид нет. Я уже задавал этот вопрос и мне так посоветовали.
Купил крутую книгу "SQL для чайнаков", читаю, второй пример от туда.Что значит преобразование типов CAST(), у меня все эти поля соответствуют по типам?



fnatali   (2002-04-03 13:03) [5]

>saf © (03.04.02 12:39)
Такая ошибка говорит о несовпадении типов.Но они не только по типу должны совпадать, но и по размеру.Проверь.



Aleksandr   (2002-04-03 13:26) [6]

Я не понял, а зачем all?
Достаточно просто union...



Johnmen   (2002-04-03 13:30) [7]

>fnatali © :
>...они не только по типу должны совпадать...

Не обязательно...



Aleksandr   (2002-04-03 13:38) [8]

Да, совпадения по типу достаточно... В одной таблице может быть поле VARCHAR(10), а во второй VARCHAR(15), кроме того, количество полей и их порядок тоже могут быть разными... Лишь бы порядок и количество перечисленных в запросе полей совпали.



saf   (2002-04-03 16:03) [9]

Aleksandr если так, то у меня ошибка, проверю размер, совмещу,
потом раскажу.



saf   (2002-04-03 16:40) [10]

Сделал все поля соответствующими даже по имени и запрос такой:
select DatNakl, Nametovar, NoNaklad, Kolvo, Zena
from rashod
union
select DatNakl, Nametovar, Nonaklad, Kolvo, Zena
from prihod
Ошибка прежняя
П-О-М-О-Г-И-Т-Е !!!!!



roottim   (2002-04-03 16:46) [11]

по красоте запрос выглядит прилично!.. но попробуй так.. мб поможет
select r.DatNakl, r.Nametovar, r.NoNaklad, r.Kolvo, r.Zena
from rashod r
union
select p.DatNakl, p.Nametovar, p.Nonaklad, p.Kolvo, p.Zena
from prihod p



Donal_Graeme   (2002-04-03 18:47) [12]

2 saf: точно типы соотвествуют вплоть до размера полей?

попробуй такой вариант :
select Cast (DatNakl as DateTime), Cast (Nametovar as alpha (255)), Cast (NoNaklad as alpha (255)), Cast (Kolvo as int), Cast (Zena as money)
from rashod
union all
select Cast (DatNakl as DateTime), Cast (Nametovar as alpha (255)), Cast (NoNaklad as alpha (255)), Cast (Kolvo as int), Cast (Zena as money)
from prihod

2 Aleksandr :
all в union писать обязательно, если хочешь получить все записи.
в select по умолчанию all а в union по умолчанию distinct.
другими словами
select all = select
union distinct = union



saf   (2002-04-04 19:40) [13]

Таблицы проверил несколько раз, всё точно соответствует
Вариант от roottim выдает ту же ошибку,
а вариант Donal_Graeme - ругается на слова DateTime,alpha и т.д.
А может не работать из-за того что у таблиц есть поле autoincrement???? Попробую убрать.



saf   (2002-04-04 19:53) [14]

Убрал autoincrement - тоже самое "Type Mismatch in expression"
Типы полей:
DatNakl - Date
Nametovar - alpha
NoNaklad - alpha
Kolvo - int
Zena - money



Donal_Graeme   (2002-04-05 11:48) [15]

э... а может, дело не в запросе вовсе?
проверь связанные с кверём таблицы, может, там уже прописаны поля с другими типами. или ты после выполнения запроса вытаскиваешь из него данные не с тем типом.



kserg@ukr.net   (2002-04-05 12:37) [16]

Может дело в в группирующих скобках в запросе?
Я имею ввиду след:

(select 1) UNION ALL (select 2) UNION ALL (select N)

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

Удачи.



kserg@ukr.net   (2002-04-05 16:22) [17]

1




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




Наверх





Память: 0.74 MB
Время: 0.058 c
1-80889           Darlok                2002-04-14 15:03  2002.04.25  
Program Files Dir


1-80910           Chainik               2002-04-15 10:43  2002.04.25  
Функциональные клавиши


3-80744           Lego                  2002-04-02 02:35  2002.04.25  
Наверное глупый вопрос... но все-же... какие файлы нужны клиенту?


6-81031           Bodia                 2002-02-12 11:44  2002.04.25  
Как росшарить диски!


1-80857           DimNK                 2002-04-13 12:24  2002.04.25  
Форма авторизации