Компьютерный форум
Правила
Вернуться   Компьютерный форум > Форум программистов > Программирование под Windows > C++ Builder
Перезагрузить страницу Составление запроса для компонента ADOQuery
Ответ
 
Опции темы Опции просмотра
  (#1 (permalink)) Старый
usik usik вне форума
Member
 
Сообщений: 89
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 21.01.2008
По умолчанию Составление запроса для компонента ADOQuery - 31.03.2008, 14:57

Составил базу на Acces , "запихнул ее в С++" и ....
Помогите с составлением запроса для компонента ADOQuery

Есть три таблицы: Лекарства , Болезни , Вспомогательная таблица для делания связи многие ко многим.
//------------------------
ЛЕКАРСТВА
ID_LEK
NAME_LEK

Их компоненты -DataSource1,ADOQuery1
//--------------------
Вспомог.Таблица
ID_VSPOM
BUF_ID_LEK
BUF_ID_BOLESN
//---------------------
БОЛЕЗНИ
ID_BOLESN
NAME_BOLESN

Их компоненты DataSource2,ADOQuery2
//------------------
Схема данных такая:

Лекарства 1 -> N Вспомог.Таблица (по полю ID_LEK -> BUF_ID_LEK)

Вспомог.Таблица N->1 Болезни (по полю BUF_ID_BOLESN-> ID_BOLESN)
//-------------------------------------------------------------------------------------------------
Логика у меня такая
1)Сначала получаем BUF_ID_BOLESN.
Для этого я писал такое

SELECT BUF_ID_BOLESN FROM Вспомог.Таблица
WHERE (BUF_ID_LEK=:ID_LEK)


Теперь я знаю по ID какие болезни лечит лекарство
//------------------------------------------------------------------------------------
Далее остается лишь вывести NAME_BOLESN....Что-то типа этого

SELECT NAME_BOLESN FROM BOLESN WHERE
ID_BOLESN=Предыдущий запрос. Но как это правильно записать не знаю....
Запарился уже комбинации перебирать.

В качестве DataSource у компонетна ADOQuery2 стоит DataSource1(BUF_ID_LEK=:ID_LEK -не задавал через Parametrs)
ну это для того чтобы я бегал по таблице лекарств а мне показывались болезни которые они лечат.

В общем помогите составить правильно запрос...Что именно нужно написать в SQL(TStrings) компонента ADOQuery2, чтобы я
щелкал по названию лекарства в одном гриде а соответствующие болезни которое лекарство лечит появилось в другом гриде
Ответить с цитированием
  (#2 (permalink)) Старый
Alexiski Alexiski вне форума
Любитель давать советы
 
Сообщений: 4,274
Сказал(а) спасибо: 27
Поблагодарили 54 раз(а) в 54 сообщениях
Регистрация: 16.10.2005
По умолчанию 31.03.2008, 16:02

То, как хочешь сделать ты, пишется так:
Код:
SELECT NAME_BOLESN 
FROM BOLESN 
WHERE ID_BOLESN IN 
(
  SELECT BUF_ID_BOLESN 
  FROM Вспомог.Таблица 
  WHERE BUF_ID_LEK=:ID_LEK
)
Но проще соединить таблицы в одном запросе:
Код:
SELECT NAME_BOLESN 
FROM BOLESN, Вспомог.Таблица
WHERE ID_BOLESN = BUF_ID_BOLESN
   AND  BUF_ID_LEK=:ID_LEK
Чтобы не запутаться, что из какой таблицы, их обычно обозначают алиасами примерно так:
Код:
SELECT B.NAME_BOLESN 
FROM BOLESN B, Вспомог.Таблица T
WHERE B.ID_BOLESN = T.BUF_ID_BOLESN
   AND  T.BUF_ID_LEK=:ID_LEK
PS. Не все движки нормально возьмут имя таблицы русскими буквами без ограничителей.
Ответить с цитированием
  (#3 (permalink)) Старый
usik usik вне форума
Member
 
Сообщений: 89
Сказал(а) спасибо: 0
Поблагодарили 0 раз(а) в 0 сообщениях
Регистрация: 21.01.2008
По умолчанию 31.03.2008, 18:32

Cпасибо. Помогло.
Ответить с цитированием
Ads
Ответ

Опции темы
Опции просмотра

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

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Trackbacks are Вкл.
Pingbacks are Вкл.
Refbacks are Выкл.


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
AdoQuery xolomka Delphi 1 18.05.2010 01:29
Фильтр в ADOQuery Cplushka SQL 1 22.06.2008 19:38
Как найти ошибку в запросе Insert компонента ADOQuery usik C++ Builder 17 22.04.2008 04:55
Как сделать добавку записи в ADOQuery usik C++ Builder 1 08.04.2008 14:48
Не закрывается ADOQuery как его закрыть FataLL C++ Builder 4 22.05.2007 16:45
Как отключить сообщение ADOQuery об ошибках Gansss C++ Builder 4 14.05.2007 09:19
Записи в ADOQuery в случайном порядке Виталик C++ Builder 4 04.12.2006 11:52
AdoQuery и работа с ним DanverOK Delphi 47 08.09.2006 11:43
Добавить строку с помощью ADOQuery snaip Delphi 3 06.03.2006 16:37
Составление HTTP запроса на сервер imported_SRG Вопросы начинающих программистов 1 31.08.2005 22:45
Добавление записи в таблицу с помощью ADOQuery Leon C++ Builder 0 10.05.2005 16:25
Как полечить ADOQuery Anonymous C++ Builder 1 17.07.2003 13:22



Powered by vBulletin® Version 3.8.7
Copyright ©2000 - 2018, Jelsoft Enterprises Ltd.
Нardforum.ru - компьютерный форум и программирование, форум программистов