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

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

Вернуться   Форум программистов > Delphi программирование > БД в Delphi
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 01.09.2009, 16:07   #1
hinku
Пользователь
 
Регистрация: 16.06.2008
Сообщений: 16
По умолчанию выборка для отчета

Добрый день делаю отчет в rave reports5, на основе выборки из трех таблиц
делаю так

Код:
select * from tbl1, tbl2, tbl3 where tbl1.otd="'+v+'" and tbl2.otd="'+v+'" and tbl3.otd="'+v+'"'
но если в tbl2 к примеру 3 записи то в отчете каждая запись из tbl1 повторяется 3 раза, если в tbl2 нет записей удовлетворяющих запросу то записи из tbl1 показываются нормально, в отчете для отображения данных из двух таблиц используются два компонента "DataBand".

извините за сумбурность.
hinku вне форума Ответить с цитированием
Старый 01.09.2009, 16:47   #2
soleil@mmc
SQL-коддинг
Участник клуба
 
Регистрация: 16.01.2009
Сообщений: 1,192
По умолчанию

все верно
вы же не задали условие объединения между этими таблицами - вот они и "перемножаются" - декартово произведение в чистом виде

если структура таблиц абсолютно идентична, то наверное стоит использовать такой запрос

Код:
select * from tbl1 where otd='v'
union all
select * from tbl2 where otd='v'
union all
select * from tbl3 where otd='v'

Последний раз редактировалось soleil@mmc; 01.09.2009 в 16:49.
soleil@mmc вне форума Ответить с цитированием
Старый 03.09.2009, 12:40   #3
hinku
Пользователь
 
Регистрация: 16.06.2008
Сообщений: 16
По умолчанию

спасибо за ответ soleil@mmc, но когда пишу запрос в таком виде выскакивает ошибка
Код:
type mismath in expression
hinku вне форума Ответить с цитированием
Старый 03.09.2009, 13:02   #4
soleil@mmc
SQL-коддинг
Участник клуба
 
Регистрация: 16.01.2009
Сообщений: 1,192
По умолчанию

Цитата:
Сообщение от hinku Посмотреть сообщение
спасибо за ответ soleil@mmc, но когда пишу запрос в таком виде выскакивает ошибка
Код:
type mismath in expression
значит таблички не идентичны и нужно либо исключить такие поля из запроса (если они там необязательны), либо привести их типы к одному и тому же если такое возможно
в обоих случаях придется раскрывать весь список полей в селекте

если возникнут вопросы с приведением типов, то почитай сначала про функцию CAST(... as ...) и ее доступность на твоей версии субд
либо тогда снова сюда с полным описанием объединяемых таблиц
soleil@mmc вне форума Ответить с цитированием
Старый 03.09.2009, 14:33   #5
hinku
Пользователь
 
Регистрация: 16.06.2008
Сообщений: 16
По умолчанию

все поля задействованные в запросе одинаковые, прописывал в select каждое поле которое необходимо отдельно, но всеравно результат тот же. переменной v присваиваю тип variant, ее значение беру из combobox.text

СУБД Paradox
структура таблиц

tbl1

fld1--a-8
fld2--a-80
fld3--a-50
fld4--a-25

tbl2

fld1--a-8 = tbl1.fld1
fld2--a-80 = tbl1.fld2
fld3--a-50 = tbl1.fld3
fld4--a-25 = tbl1.fld4

tbl3

fld1--a-25 = tbl1.fld4
fld2--a-35
hinku вне форума Ответить с цитированием
Старый 03.09.2009, 15:00   #6
soleil@mmc
SQL-коддинг
Участник клуба
 
Регистрация: 16.01.2009
Сообщений: 1,192
По умолчанию

ну может тогда и запрос все-таки выложишь
потому что то что ты привел - это не идентично полностью, а только частично

и эттаа...
привести полное описание таблиц - это значит расписать поля и типы полей
soleil@mmc вне форума Ответить с цитированием
Старый 03.09.2009, 15:16   #7
hinku
Пользователь
 
Регистрация: 16.06.2008
Сообщений: 16
По умолчанию

запрос

Код:
 
        Query1.Close;
        Query1.SQL.Clear;
        Query1.SQL.text:=('select otd,inv,fio,name from inv where inv.otd="'+v+'"');
        Query1.SQL.Add('union all');
        Query1.SQL.Add('select otd,fio,naimen,nomer from nbp2 where nbp2.otd="'+v+'"');
        Query1.SQL.Add('union all');
        Query1.SQL.Add('select otd,nach from podrazdelenie where Podrazdelenie.otd="'+v+'"');

        Query1.Open;
поле----------- тип данных------------размер

inv

inv-------------- Alphanumeric-------------8
name------------ Alphanumeric------------80
fio--------------- Alphanumeric------------50
otd--------------- Alphanumeric-----------25

nbp2

nomer------------- Alphanumeric---------8
naimen------------ Alphanumeric---------80
fio----------------- Alphanumeric--------50
otd----------------- Alphanumeric-------25

podrazdelenie

otd---------------- Alphanumeric--------25
nach---------------- Alphanumeric-------35
hinku вне форума Ответить с цитированием
Старый 03.09.2009, 15:20   #8
SuperVisor
Павел Сергеевич
Форумчанин
 
Регистрация: 05.11.2006
Сообщений: 665
По умолчанию

1. Количество столбцов, возвращаемых каждым запросом должно быть идентично.
2. С каких пор Alphanumeric 8, Alphanumeric 50 и Alphanumeric 35 стали одинаковы???? 8=50=35???? Как получится, что в строку длиной 8 байт запрос вернет 35 символов???? Первый запрос задает типы и размерности столбцов...
Познавая других, мы познаем себя.
С'est la vie...
SuperVisor вне форума Ответить с цитированием
Старый 03.09.2009, 15:35   #9
soleil@mmc
SQL-коддинг
Участник клуба
 
Регистрация: 16.01.2009
Сообщений: 1,192
По умолчанию

во
вот таким почти в идеале должен был ыбть твой первый пост по этой теме
теперь проясняется что тебе на самом деле нужно (имхо)

пробуй такой запрос
Код:
select
  i.inv,
  i.name,
  i.fio,
  i.otd,
  p.nach
from
  inv i,
  podrazdelenie p
where 0=0
   and p.otd = i.otd
   and p.otd = :p0
union all
select
  n.nomer,
  n.naimen,
  n.fio,
  n.otd,
  p.nach
from 
  nbp2 n,
  podrazdelenie p
where 0=0
   and p.otd = n.otd
   and p.otd = :p0
soleil@mmc вне форума Ответить с цитированием
Старый 03.09.2009, 16:11   #10
hinku
Пользователь
 
Регистрация: 16.06.2008
Сообщений: 16
По умолчанию

спасибо огромное

скажите только для чего нужен

Where 0=0
hinku вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Выборка данных из таблицы и составление отчета! WildKosha Microsoft Office Excel 20 25.02.2013 16:11
Здрасте))выручайте)1ну прогу надо для отчета не могу ни как догнать:)помогите:) MrMorozko Помощь студентам 10 20.06.2009 20:54
Создание отчета Deni55 Microsoft Office Excel 13 15.06.2009 14:53
Сохранение отчета Nikolaeva Общие вопросы Delphi 0 22.09.2008 11:24
Запросы для создания отчета John_chek БД в Delphi 15 19.02.2007 08:55