Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Web программирование > SQL, базы данных
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 16.11.2010, 13:23   #1
eldalex
Пользователь
 
Регистрация: 01.09.2010
Сообщений: 52
По умолчанию несовместимые типы данных :(

Добрый день, возникла небольшая проблема с ораклом.
в двух словах так. есть две таблицы.
1) Images
ID_IMAGE NUMBER
IMAGE BLOB
PARENT_ID NUMBER
PERS_ID NUMBER
IMG_NAME VARCHAR2(50 BYTE)
COMMENTS VARCHAR2(200 BYTE)
IS_SELECTABLE NUMBER

2) Rul
ID_RUL NUMBER
ID_IMAGE NUMBER
PROT_KIND_ID NUMBER

в есть пара записей:
1)Images
Код:
ID_IMAGE  IMAGE	PARENT_ID	PERS_ID   IMG_NAME   COMMENTS                IS_SELECTABLE
1             (BLOB)	24		       null            Big man        гигант                            1
2             (BLOB)	24		       null            Skeleton       Скелет человека1           1
3             (BLOB)	24		       null            skeleton2      скелет с мясцом             1
123         (BLOB)	null                  10000354  null	             null                                  null		
24           (BLOB)	null		       null            Скелет          Раздел скелет человека  1
1)Rul
Код:
ID_RUL  ID_IMAGE PROT_KIND_ID
14	     3	              10000302
1	     1	              10000302
2	     2	              10000302
мне необходимо выбрать все изображения связанные с PROT_KIND_ID=10000302
и все изображения связанные с конкретным PERS_ID в примере он равен 10000354
итак, пишу запрос, две разновидности одного и того же запроса:
Код:
select  pr2_prot_images.id_image
         ,img_name
         ,comments
         ,image
    from  pr2_prot_images
      where (pr2_prot_images.pers_id=10000354)
union  
  select pr2_prot_images.id_image
          ,img_name
          ,comments
          ,image
    from  pr2_prot_images, pr2_rul_gr_prot
      where  (prot_kind_id= 10000302 and pr2_rul_gr_prot.id_image=pr2_prot_images.id_image);    

------------

select distinct pr2_prot_images.id_image
                   ,img_name
                   ,comments
                   ,image
    from  pr2_prot_images, pr2_rul_gr_prot
      where  (prot_kind_id= 10000302 and pr2_rul_gr_prot.id_image=pr2_prot_images.id_image) 
      or (pr2_prot_images.pers_id=10000354)
по идее должно работать. верхняя часть первого запроса выдает мне одну строку, как и должна
123 null null (BLOB)
нижняя часть выдает три, тоже как и должна
3 skeleton2 скелет с мясцом (BLOB)
1 Big man гигант (BLOB)
2 Skeleton Скелет человека1 (BLOB)

но вот когда я ставлю union между ними и вызываю запрос то мне выдается не совсем понятная ошибка

ORA-00932: несовместимые типы данных: ожидалось -, получено BLOB
00932. 00000 - "inconsistent datatypes: expected %s got %s"

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

Последний раз редактировалось eldalex; 16.11.2010 в 13:29. Причина: чет вроде равнял равнял, а все равно все в кривь да в кось)
eldalex вне форума Ответить с цитированием
Старый 17.11.2010, 09:25   #2
BeJIuKuu_Hexo4yxa
Пользователь
 
Регистрация: 13.10.2010
Сообщений: 96
По умолчанию

Не исключено, что в одном из подзапросов происходит преобразование BLOB во что-нибудь.
Попробуй исключить это поле из запросов, дабы убедиться, что дело действительно в нем.
Если это так, то посмотри, что выбирается в 1 и 2 частях запроса, нет ли преобразования
Пишите код так, как будто сопровождать его будет склонный к насилию психопат, который знает, где вы живете. (Стив Макконнелл)
BeJIuKuu_Hexo4yxa вне форума Ответить с цитированием
Старый 17.11.2010, 13:46   #3
DryRain
 
Аватар для DryRain
 
Регистрация: 17.11.2010
Сообщений: 3
По умолчанию

Через union не срабатывает, а вот через union all кушает на ура.

select images.id_image
,img_name
,comments
,image
from images
where (images.pers_id=10000353)
union all
select images.id_image
,img_name
,comments
,image
from images, rul
where (prot_kind_id= 10000302 and rul.id_image=images.id_image);

У нас принято оформлять код специальным тэгом - при помощи кнопочки "#".
Только...
И не значком #.
И не РНР-кодом.
И не значком цитаты.
И не собственными "ручками".
Рекомендую. Помимо общих правил форума есть и дополнения к ним в каждом разделе...
Модератор
Бегемот - это странный медведь...

Последний раз редактировалось mihali4; 17.11.2010 в 15:10.
DryRain вне форума Ответить с цитированием
Старый 17.11.2010, 15:03   #4
soleil@mmc
SQL-коддинг
Участник клуба
 
Регистрация: 16.01.2009
Сообщений: 1,192
По умолчанию

а самостоятельно можешь ответить теперь почему без "all" не срабатывало?

обычный юнион (без "all") удаляет дубликаты и не может это сделать по блоб-полю
soleil@mmc вне форума Ответить с цитированием
Старый 17.11.2010, 15:49   #5
DryRain
 
Аватар для DryRain
 
Регистрация: 17.11.2010
Сообщений: 3
По умолчанию

Собственно distinct так же удаляет дубликаты, из-за этого и последней запрос у вас, eldalex, не работает.
Бегемот - это странный медведь...
DryRain вне форума Ответить с цитированием
Старый 22.11.2010, 14:07   #6
eldalex
Пользователь
 
Регистрация: 01.09.2010
Сообщений: 52
По умолчанию

Ох блин) я уже и забыл сюда заходить спасибо за ответы, но я уже переделал, сделал запрос без выборки blob поля, просто при выборе какого либо значения из полученного списка идет мелкий select blob по выбранному id.
eldalex вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Типы данных С++ werser Помощь студентам 1 13.03.2010 18:34
Типы данных psycho-coder Паскаль, Turbo Pascal, PascalABC.NET 6 04.02.2010 20:03
Ошибка про несовместимые типы SanekIrk Общие вопросы Delphi 2 08.09.2009 09:47
Типы данных??? Рустам Общие вопросы Delphi 10 08.11.2007 08:03