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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 11.06.2013, 21:01   #1
delfin07
Форумчанин
 
Регистрация: 14.05.2011
Сообщений: 108
По умолчанию Запросы

у меня есть 3 запроса в access
1
Код:
SELECT mag.kod_mag, tovarmes.god, tovarmes.tovaraoborot
FROM mag INNER JOIN tovarmes ON mag.kod_mag = tovarmes.kod_mag
WHERE (tovarmes.[god])=2012;
2
Код:
SELECT mag.kod_mag, tovarmes.god, tovarmes.tovaraoborot AS tov
FROM mag INNER JOIN tovarmes ON mag.kod_mag = tovarmes.kod_mag
WHERE god=2013;
3
Код:
SELECT Запрос1.god, Запрос1.tovaraoborot, Запрос2.tov, Запрос2.god, mag.nas
FROM (Запрос1 RIGHT JOIN mag ON Запрос1.kod_mag = mag.kod_mag) LEFT JOIN Запрос2 ON mag.kod_mag = Запрос2.kod_mag;
выводит все нормаль за 2012и 2013
но когда я делаю это в делфи года выводит только которые стоят в access
вот код делфи
Код:
ADOQuery1.Active:=False;
ADOQuery1.SQL.Text:='SELECT mag.kod_mag, tovarmes.god, tovarmes.tovaraoborot FROM mag INNER JOIN tovarmes ON mag.kod_mag = tovarmes.kod_mag WHERE (((tovarmes.[god])='+Combobox1.Text+'))';

ADOQuery1.Active:=true;
ADOQuery2.Active:=False;
ADOQuery2.SQL.Text:='SELECT mag.kod_mag, tovarmes.god, tovarmes.tovaraoborot AS tov FROM mag INNER JOIN tovarmes ON mag.kod_mag = tovarmes.kod_mag WHERE god='+Combobox2.Text+'';
ADOQuery2.Active:=true;


 ADOQuery3.Active:=False;
ADOQuery3.SQL.Text:='SELECT Çàïðîñ1.god, Çàïðîñ1.tovaraoborot, Çàïðîñ2.tov, Çàïðîñ2.god, mag.nas FROM (Çàïðîñ1 RIGHT JOIN mag ON Çàïðîñ1.kod_mag = mag.kod_mag) LEFT JOIN Çàïðîñ2 ON mag.kod_mag = Çàïðîñ2.kod_mag';
ADOQuery3.Active:=true;

Çàïðîñ-это мой 'запрос' не корректно отобразился

Последний раз редактировалось Stilet; 11.06.2013 в 22:18.
delfin07 вне форума Ответить с цитированием
Старый 11.06.2013, 21:11   #2
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Цитата:
но когда я делаю это в делфи года выводит только которые стоят в access
как это расшифровать? Что выводит и что должен выводить по вашему мнению?
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 11.06.2013, 21:16   #3
delfin07
Форумчанин
 
Регистрация: 14.05.2011
Сообщений: 108
По умолчанию

при фильтрации в делфи ADOQuery3 не изменяется то есть берет года из Запроса который в базе access а не из ADOQuery1
delfin07 вне форума Ответить с цитированием
Старый 11.06.2013, 21:42   #4
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

А почему он должен брать из ADOQuery1? Не существует он для него, а существует только база со своим содержимым. Встраивайте запросы из ADOQuery1 и ADOQuery2 подзапросами в запрос из ADOQuery3
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 11.06.2013, 22:13   #5
delfin07
Форумчанин
 
Регистрация: 14.05.2011
Сообщений: 108
По умолчанию

а можно изменять запрос через делфи если да то как
delfin07 вне форума Ответить с цитированием
Старый 11.06.2013, 22:22   #6
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Что-то и я с трудом понял...
Ты хочешь, чтоб третий запрос используя два первых отработал в твое Дельфийской программе?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 11.06.2013, 22:25   #7
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Используя ADOX возможно и можно, не пробовал. А что мешает во FROM третьего запроса сделать вложенные запросы? ACCESS позволяет это. Или вообще запрос переделать, как не скажу, смысла не понимаю в этих запросах
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Старый 11.06.2013, 22:51   #8
delfin07
Форумчанин
 
Регистрация: 14.05.2011
Сообщений: 108
По умолчанию

Я ВО ВЛОЖЕННЫХ ЗАПРОСОХ НЕ СИЛЬНО ЕСЛИ МОЖЕШЬ ПОМОГИ С ВЛОЖЕННЫМИ ЗАПРОСАМИ
delfin07 вне форума Ответить с цитированием
Старый 11.06.2013, 23:04   #9
evg_m
Старожил
 
Регистрация: 20.04.2008
Сообщений: 5,526
По умолчанию

Цитата:
МОЖЕШЬ ПОМОГИ С ВЛОЖЕННЫМИ ЗАПРОСАМИ
формальное применение вложенных
Код:
select z1.*, z2.*
from ( <здесь просто текст запроса, который называется вложенным> ) as z1
left join ( ..... ) as z2 on z1.xx =z2.yy
но здесь можно и без них
Код:
select mag.kod_mag, mag.nas, 
  godx1.god as godx1, godx1.tovaraoborot as oborotx1,
  godx2.god as godx2, godx2.tovaraoborot as oborotx2
from ( mag 
left join tovarmes as godx1 on tovarmes.kod_mag =mag.kod_mag and tovarmes.god=2012 )
left join tovarmes as godx2 on tovarmes.kod_mag =mag.kod_mag and tovarmes.god=2013
программа — запись алгоритма на языке понятном транслятору

Последний раз редактировалось evg_m; 11.06.2013 в 23:10.
evg_m вне форума Ответить с цитированием
Старый 11.06.2013, 23:07   #10
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Если поизвращаться и сделать в лоб, то примерно так
Код:
SELECT Z1.god AS God1, Z1.tovaraoborot AS Tov1, Z2.tovaraoborot AS Tov2, Z2.god AS God2, M.nas
  FROM (
    (SELECT mag.kod_mag, tovarmes.god, tovarmes.tovaraoborot
       FROM mag INNER JOIN tovarmes ON mag.kod_mag = tovarmes.kod_mag
       WHERE (tovarmes.[god])=2012) Z1 RIGHT JOIN mag M ON Z1.kod_mag = M.kod_mag)
  LEFT JOIN
    (SELECT mag.kod_mag, tovarmes.god, tovarmes.tovaraoborot AS tov
       FROM mag INNER JOIN tovarmes ON mag.kod_mag = tovarmes.kod_mag
       WHERE god=2013 ) Z2 ON M.kod_mag = Z2.kod_mag
А если по хорошему и правильно понял, то в таком варианте
Код:
SELECT Z1.god AS God1, Z1.tovaraoborot AS Tov1, Z2.tovaraoborot AS Tov2, Z2.god AS God2, mag.nas
  FROM (mag
    LEFT JOIN tovarmes Z1 ON Z1.god=2012 AND Z1.kod_mag = mag.kod_mag)
    LEFT JOIN tovarmes Z2 ON Z2.god=2013 AND Z2.kod_mag = mag.kod_mag
Опередили, упс
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию
Аватар вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Запросы к БД 10minute SQL, базы данных 0 26.01.2012 22:54
запросы Marusiabl SQL, базы данных 1 16.11.2010 09:59
Запросы в БД Valecus Microsoft Office Access 6 11.11.2010 21:55
Запросы к БД limon PHP 7 28.11.2008 20:29
Запросы к БД xDjarx БД в Delphi 6 14.05.2008 17:04