|
Компьютерный форум OSzone.net » Программирование, базы данных и автоматизация действий » Программирование и базы данных » MSFT SQL Server - Запрос на выборку данных из нескольких таблиц |
|
|
MSFT SQL Server - Запрос на выборку данных из нескольких таблиц
|
Пользователь Сообщения: 117 |
Есть база данных. В ней имеются таблицы:
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
|
Профиль | Отправить PM | Цитировать Цитата old_nick:
Наподобие: |
|
Отправлено: 15:26, 01-11-2012 | #2 |
Для отключения данного рекламного блока вам необходимо зарегистрироваться или войти с учетной записью социальной сети. Если же вы забыли свой пароль на форуме, то воспользуйтесь данной ссылкой для восстановления пароля. |
Пользователь Сообщения: 117
|
Профиль | Отправить PM | Цитировать Iska, спасибо. Вроде работает. Только не понял, зачем точка с запятой в конце. Привет Паскалю?
|
Отправлено: 17:28, 02-11-2012 | #3 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать old_nick, у меня не было в тот момент под рукой доступа к SQL серверу, потому я воспользовался Microsoft Access. Точка с запятой — оттуда.
|
Отправлено: 18:26, 02-11-2012 | #4 |
Пользователь Сообщения: 117
|
Профиль | Отправить 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
|
Профиль | Отправить 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 |
Пользователь Сообщения: 117
|
Профиль | Отправить PM | Цитировать Iska, спасибо, работает.
|
Отправлено: 20:45, 05-11-2012 | #7 |
Пользователь Сообщения: 117
|
Профиль | Отправить PM | Цитировать Iska, возникла еще потребность добавить в результирующий набор поле строкового типа, которое:
1) будет иметь возможность редактирования; 2) будет являться "временным", т.е. его добавление в набор и изменения в нем не будут никак сказываться на исходной БД. Пробовал сделать, как тут и тут, но в результате нет возможности редактировать. |
Отправлено: 02:47, 13-11-2012 | #8 |
Ветеран Сообщения: 27449
|
Профиль | Отправить PM | Цитировать Какова цель добавления такого поля?
|
Отправлено: 09:52, 13-11-2012 | #9 |
Пользователь Сообщения: 117
|
Профиль | Отправить PM | Цитировать Суть в том, что формируется таблица клиентов, которым потом будут рассылаться оповещения на почту. Пользователь должен иметь возможность исключить любую запись из списка рассылки, пометив ее в таблице. При этом на исходной БД это никак не должно отражаться.
|
Отправлено: 11:27, 13-11-2012 | #10 |
|
![]() |
Участник сейчас на форуме |
![]() |
Участник вне форума |
![]() |
Автор темы |
![]() |
Сообщение прикреплено |
| |||||
Название темы | Автор | Информация о форуме | Ответов | Последнее сообщение | |
Прочие БД - [решено] запрос на выборку с условием | 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 |
|