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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 29.11.2012, 16:57   #1
stas45rus
Пользователь
 
Регистрация: 26.08.2011
Сообщений: 46
По умолчанию Запрос SQL

Здравствуйте. Есть такой вопрос. Имеется таблица MS Access (связи см. во вложенном файле). Связал её с Delphi. Добавил компоненты ADOConnection, ADOQuery, DataSource. Нужно на языке SQL написать такой запрос, чтобы в DBGrid выводился список жителей с указанием их профессий. Помогите с запросом. Таблица "Имеет_профессию" как перевалочный пункт здесь, и я не знаю как правильно написать запрос. Пробовал вот так, но ничего не вышло:
Код:
ADOQuery1.SQL.Clear;
ADOQuery1.SQL.Add('SELECT Жители.Код_жителя,Профессии.Код_профессии');
ADOQuery1.SQL.Add('FROM Жители,Профессии');
ADOQuery1.SQL.Add('WHERE // а тут заплёт получается');
ADOQuery1.Open;
Изображения
Тип файла: jpg Безымянный.jpg (24.2 Кб, 100 просмотров)
stas45rus вне форума Ответить с цитированием
Старый 29.11.2012, 17:06   #2
maLoy*508
Форумчанин
 
Аватар для maLoy*508
 
Регистрация: 28.03.2008
Сообщений: 672
По умолчанию

как-то так:
Код:
ADOQuery1.SQL.Clear;
ADOQuery1.SQL.Add('SELECT Жители.Код_жителя,Профессии.Код_профессии');
ADOQuery1.SQL.Add('FROM Жители A,Профессии B, Имеет_профессию C');
ADOQuery1.SQL.Add('WHERE A.Код_жителя = C.Код_жителя and B.Код_профессии = C.Код_профессии');
ADOQuery1.Open;
maLoy*508 вне форума Ответить с цитированием
Старый 29.11.2012, 17:40   #3
Slym
Участник клуба
 
Регистрация: 07.12.2011
Сообщений: 1,025
По умолчанию

Иванов Сантехник
Петров Программист
Никак т.к. связь многие ко многим. Один чел может иметь несколько профессий
т.е. Петров Программист Сисадмин Генеколог

еслиб связь Жители и имеет_профессию былаб 1 к 1 то читать про join, да мастер запросов в ацессе нормально справится
Не стесняемся, плюсуем!

Последний раз редактировалось Slym; 29.11.2012 в 17:45.
Slym вне форума Ответить с цитированием
Старый 29.11.2012, 18:04   #4
Аватар
Старожил
 
Аватар для Аватар
 
Регистрация: 17.11.2010
Сообщений: 18,922
По умолчанию

Можно выбросить таблицу Имеет_профессию, поле Код_профессии засунуть в таблицу Жители и по этому полю сделать внешнюю ссылку на таблицу Профессии. Тогда все проблемы с запросом уйдут. Все это имеет смысл, если у жителя одна профессия. Если их действительно несколько, то оставить как есть и запрос
Код:
SELECT Жители.Код_жителя,Профессии.Код_профессии
  FROM Жители,Имеет_профессию,Профессии
  WHERE Жители.Код_жителя=Имеет_профессию.Код_жителя AND Имеет_профессию.Код_профессии=Профессии.Код_профессии
Собственно maLoy*508 тоже самое предложил, только обратил внимание
Если бы архитекторы строили здания так, как программисты пишут программы, то первый залетевший дятел разрушил бы цивилизацию

Последний раз редактировалось Аватар; 29.11.2012 в 18:11.
Аватар вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
запрос SQL Dush БД в Delphi 3 04.11.2011 21:27
Запрос с CASE переделать в запрос с PIVOT (MS SQL Server 2005) Машуля SQL, базы данных 4 06.05.2010 21:09
Создание новых таблиц в MS SQL SERVERE через SQL запрос в Delphi S_Yevgeniy Помощь студентам 1 27.10.2009 06:26
SQL-запрос Elena БД в Delphi 3 17.05.2007 15:13
SQL запрос на основе другого SQL запрса... Timoxa БД в Delphi 1 07.01.2007 18:15