Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > Базы данных
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 02.01.2014, 12:35
govorun govorun вне форума
Новичок
 
Регистрация: 30.10.2013
Сообщения: 60
Версия Delphi: delphi 7
Репутация: 10
По умолчанию запрос из нескольких таблиц

Пытаюсь сделать в ADOQUERY запрос на выборку из нескольких таблиц.
По задумке должно быть так:
Код:
1
2
3
SELECT * 
FROM A1 WHERE [Дата поступл] <D1
FROM A2 WHERE ([Дата поступл]<D1) AND ([Дата выпл]>D1)

D1 - это дата, которая будет вводиться в EDIT
в процедуре будет сделано так:
Код:
1
2
3
4
5
6
7
var d1:datetime;
begin
d1:=edit1.text;
adoquery.close;
adoquery.open;
...
...

На практике с запросом ничего не получается....
Ответить с цитированием
  #2  
Старый 02.01.2014, 13:15
Аватар для poli-smen
poli-smen poli-smen вне форума
Профессионал
 
Регистрация: 06.08.2012
Адрес: Кривой Рог
Сообщения: 1,791
Версия Delphi: Delphi 7, XE2
Репутация: 4415
По умолчанию

Цитата:
Сообщение от govorun
Пытаюсь сделать в ADOQUERY запрос на выборку из нескольких таблиц.
По задумке должно быть так:
Код:
1
2
3
SELECT * 
FROM A1 WHERE [Дата поступл] <D1
FROM A2 WHERE ([Дата поступл]<D1) AND ([Дата выпл]>D1)
Так конечно не получится - в SELECT-е нельзя дважды указывать FROM.
Если таблицы должны соединиться "вертикально" - используй UNION.
Если таблицы должны соединиться "горизонтально" (с пересечением) используй JOIN с указанием условия пересечения.
Ответить с цитированием
  #3  
Старый 02.01.2014, 13:54
govorun govorun вне форума
Новичок
 
Регистрация: 30.10.2013
Сообщения: 60
Версия Delphi: delphi 7
Репутация: 10
По умолчанию

Цитата:
Сообщение от poli-smen
Так конечно не получится - в SELECT-е нельзя дважды указывать FROM.
Если таблицы должны соединиться "вертикально" - используй UNION.
Если таблицы должны соединиться "горизонтально" (с пересечением) используй JOIN с указанием условия пересечения.

Таблицы между собой ничем не связаны, просто имеют одинаковую структуру. Нужно выбрать данные по условию из одной таблицы, данные по условию из другой таблицы. Собрать их в кучу. Дальше планируется их отсортировать, подсчитать общий итог и загрузить в grid или сразу в Memo для печати
Ответить с цитированием
  #4  
Старый 02.01.2014, 15:00
Аватар для poli-smen
poli-smen poli-smen вне форума
Профессионал
 
Регистрация: 06.08.2012
Адрес: Кривой Рог
Сообщения: 1,791
Версия Delphi: Delphi 7, XE2
Репутация: 4415
По умолчанию

Цитата:
Сообщение от govorun
Таблицы между собой ничем не связаны, просто имеют одинаковую структуру. Нужно выбрать данные по условию из одной таблицы, данные по условию из другой таблицы. Собрать их в кучу. Дальше планируется их отсортировать, подсчитать общий итог и загрузить в grid или сразу в Memo для печати
Тогда значит UNION. И возможно с созданием временной таблицы или представления (View) для более удобной последующей обработки.
Ответить с цитированием
  #5  
Старый 02.01.2014, 16:44
govorun govorun вне форума
Новичок
 
Регистрация: 30.10.2013
Сообщения: 60
Версия Delphi: delphi 7
Репутация: 10
По умолчанию

Цитата:
Сообщение от poli-smen
Тогда значит UNION. И возможно с созданием временной таблицы или представления (View) для более удобной последующей обработки.

А подробнее можно?
Я понимаю, что вы меня направляете "на путь истинный" но все же...
Спасибо
Ответить с цитированием
  #6  
Старый 02.01.2014, 17:26
lmikle lmikle вне форума
Модератор
 
Регистрация: 17.04.2008
Сообщения: 8,090
Версия Delphi: 7, XE3, 10.2
Репутация: 49089
По умолчанию

подробнее:
Код:
1
2
3
SELECT * FROM Таблица1 WHERE [Условие1]
UNION ALL
SELECT * FROM Таблица2 WHERE [Условие2]
Ответить с цитированием
Этот пользователь сказал Спасибо lmikle за это полезное сообщение:
govorun (02.01.2014)
  #7  
Старый 02.01.2014, 17:39
govorun govorun вне форума
Новичок
 
Регистрация: 30.10.2013
Сообщения: 60
Версия Delphi: delphi 7
Репутация: 10
По умолчанию

Цитата:
Сообщение от lmikle
подробнее:
Код:
1
2
3
SELECT * FROM Таблица1 WHERE [Условие1]
UNION ALL
SELECT * FROM Таблица2 WHERE [Условие2]

Спасибо, а с представлением помочь не сможете?
Ответить с цитированием
  #8  
Старый 03.01.2014, 18:15
lmikle lmikle вне форума
Модератор
 
Регистрация: 17.04.2008
Сообщения: 8,090
Версия Delphi: 7, XE3, 10.2
Репутация: 49089
По умолчанию

А чего с ним, представлением, не так?
Не можешь к тому же запросу дописать в начале "CREATE VIEW ViewName AS"?
Ответить с цитированием
  #9  
Старый 03.01.2014, 22:19
govorun govorun вне форума
Новичок
 
Регистрация: 30.10.2013
Сообщения: 60
Версия Delphi: delphi 7
Репутация: 10
По умолчанию

Цитата:
Сообщение от lmikle
А чего с ним, представлением, не так?
Не можешь к тому же запросу дописать в начале "CREATE VIEW ViewName AS"?

От тебе хорошо глаголить про понятные тебе вещи.
Ты сколько с Delphi дружишь?

Я например - с конца августа 2013, по выходным и то не по каждым...
Самоучка я, для меня на практике гораздо лучше переваривать чем по книжкам. Хотя и в книжках есть понятные вещи, но практика - есть практика.
По крайней мере я наверное смогу повторить то, что уже удалось написать.

Вот раскажи мне на пальцах, раз ты такой профи, как сделать:

Выбрать из двух разных таблиц данные с разными условиями, добавить к ним вычисляемое поле (увязка с данными вводимыми в ручную), отсортировать все по трем полям, и закинуть в MEMO для печати, причем печать должна иметь некое подобие таблицы. Вычисляемое поле должно иметь общий итог. При выводе на печать, а вернее в MEMO должно быть выравнивание данных по значению.

Лично для меня - это далеко не одна процедура, и все это я буду делать по отдельности, хотя наверное люди с мозгамиумудрятся засунуть все это в одну процедуру.
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 05:19.


 

Сайт

Форум

FAQ

Соглашения

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2025