Имя пользователя:
Пароль:  
Помощь | Регистрация | Забыли пароль?  | Правила  

Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » MSFT SQL Server - Запрос на выборку данных из нескольких таблиц

Ответить
Настройки темы
MSFT SQL Server - Запрос на выборку данных из нескольких таблиц

Аватара для old_nick

Пользователь


Сообщения: 117
Благодарности: 0

Профиль | Отправить PM | Цитировать


Изменения
Автор: old_nick
Дата: 05-11-2012
Описание: опечатка
Есть база данных. В ней имеются таблицы:
Clients - клиенты
ClientInAgreements - таблица "Заявки клиентов", связывающая Clients и Agreements.
Agreements - заявки

Один клиент может оформлять несколько заявок. С другой стороны, к одной заявке может быть привязано несколько клиентов, отсюда и такая структура.

Поля Clients:
CL_ID - уникальный ID клиента
CL_FIO
CL_email

Поля ClientInAgreements:
CA_ID - уникальный ID записи в таблице
CA_CL_ID - уникальный ID клиента (связь с таблицей Clients)
CA_AG_ID - уникальный ID заявки (связь с таблицей Agreements)

Поля Agreements:
AG_ID - уникальный ID заявки
AG_Date - дата заявки (тип DateTime)
AG_code - буквенно-цифровой код заявки

Задача такая: получить таблицу заявок, оформленных на определенную дату (например, 20.01.2012), с такими полями

Уникальный ID заявки
Буквенно-цифровой код заявки
Уникальный ID клиента
ФИО клиента
email клиента

Хочется сделать все это с помощью одного SQL-запроса.
Уникальные ID представлены целыми числами.

Упростить и переделать базу данных не предлагать, т.к. такой возможности нет.

Отправлено: 13:59, 01-11-2012

 

Ветеран


Сообщения: 27449
Благодарности: 8087

Профиль | Отправить PM | Цитировать


Цитата old_nick:
Упростить и переделать базу данных не предлагать, т.к. такой возможности нет. »
Упрощать и переделывать структуру базы данных не надо.

Наподобие:
Код: Выделить весь код
SELECT Agreements.AG_ID, Agreements.AG_code, Clients.CL_ID, Clients.CL_FIO, Clients.CL_email FROM Clients INNER JOIN (Agreements INNER JOIN ClientInAgreemetns ON Agreements.AG_ID = ClientInAgreemetns.CA_AG_ID) ON Clients.CL_ID = ClientInAgreemetns.CA_CL_ID;
Это сообщение посчитали полезным следующие участники:

Отправлено: 15:26, 01-11-2012 | #2



Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети.

Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля.


Аватара для old_nick

Пользователь


Сообщения: 117
Благодарности: 0

Профиль | Отправить PM | Цитировать


Iska, спасибо. Вроде работает. Только не понял, зачем точка с запятой в конце. Привет Паскалю?

Отправлено: 17:28, 02-11-2012 | #3


Ветеран


Сообщения: 27449
Благодарности: 8087

Профиль | Отправить PM | Цитировать


old_nick, у меня не было в тот момент под рукой доступа к SQL серверу, потому я воспользовался Microsoft Access. Точка с запятой — оттуда.

Отправлено: 18:26, 02-11-2012 | #4


Аватара для old_nick

Пользователь


Сообщения: 117
Благодарности: 0

Профиль | Отправить PM | Цитировать


Iska, если не затруднит, подскажете, как выцепить еще и данные из таблиц Coutries и Cities?

Поля Countries:
CN_ID
CN_Name

Поля Cities:
CT_ID
CT_Name

С этими таблицами связана таблица Agreements: поля AG_CN_ID и AG_CT_ID соответственно. В результирующей таблице надо отобразить CN_Name и CT_Name

Заранее спасибо.

Отправлено: 03:03, 04-11-2012 | #5


Ветеран


Сообщения: 27449
Благодарности: 8087

Профиль | Отправить PM | Цитировать


Примерно так:
Код: Выделить весь код
SELECT Agreements.AG_ID, Agreements.AG_code, Clients.CL_ID, Clients.CL_FIO, Clients.CL_email, Countries.CN_Name, Cities.CT_Name FROM Countries INNER JOIN (Cities INNER JOIN (Clients INNER JOIN (Agreements INNER JOIN ClientInAgreemetns ON Agreements.AG_ID = ClientInAgreemetns.CA_AG_ID) ON Clients.CL_ID = ClientInAgreemetns.CA_CL_ID) ON Cities.CT_ID = Agreements.AG_CT_ID) ON Countries.CN_ID = Agreements.AG_CN_ID
Это сообщение посчитали полезным следующие участники:

Отправлено: 11:35, 04-11-2012 | #6


Аватара для old_nick

Пользователь


Сообщения: 117
Благодарности: 0

Профиль | Отправить PM | Цитировать


Iska, спасибо, работает.

Отправлено: 20:45, 05-11-2012 | #7


Аватара для old_nick

Пользователь


Сообщения: 117
Благодарности: 0

Профиль | Отправить PM | Цитировать


Iska, возникла еще потребность добавить в результирующий набор поле строкового типа, которое:
1) будет иметь возможность редактирования;
2) будет являться "временным", т.е. его добавление в набор и изменения в нем не будут никак сказываться на исходной БД.

Пробовал сделать, как тут и тут, но в результате нет возможности редактировать.

Отправлено: 02:47, 13-11-2012 | #8


Ветеран


Сообщения: 27449
Благодарности: 8087

Профиль | Отправить PM | Цитировать


Какова цель добавления такого поля?

Отправлено: 09:52, 13-11-2012 | #9


Аватара для old_nick

Пользователь


Сообщения: 117
Благодарности: 0

Профиль | Отправить PM | Цитировать


Суть в том, что формируется таблица клиентов, которым потом будут рассылаться оповещения на почту. Пользователь должен иметь возможность исключить любую запись из списка рассылки, пометив ее в таблице. При этом на исходной БД это никак не должно отражаться.

Отправлено: 11:27, 13-11-2012 | #10



Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » MSFT SQL Server - Запрос на выборку данных из нескольких таблиц

Участник сейчас на форуме Участник сейчас на форуме Участник вне форума Участник вне форума Автор темы Автор темы Шапка темы Сообщение прикреплено

Похожие темы
Название темы Автор Информация о форуме Ответов Последнее сообщение
Прочие БД - [решено] запрос на выборку с условием Setser Программирование и базы данных 3 10-08-2010 20:33
Прочие БД - SQL запрос на выборку по дате echo off Программирование и базы данных 1 10-06-2009 01:15
Прочие БД - Запрос на выборку из двух таблиц! st031 Программирование и базы данных 1 05-06-2009 17:02
Прочие БД - Запрос (простенький) на выборку. Excel or Access 2007!!!! netphil Программирование и базы данных 3 22-01-2009 01:54
MySQL - помогите сделать запрос. обьединение таблиц в запросе running-frag Программирование и базы данных 5 24-12-2008 11:05




 
Переход